apache/rocketmq · error · AuthorizationException

subscription is null.

Error message

subscription is null.

What it means

Error "subscription is null." thrown in apache/rocketmq.

Source

Thrown at auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java:327

                    result.add(DefaultAuthorizationContext.of(subject,
                        Resource.ofGroup(requireResource(assignmentBody.getConsumerGroup(), "consumer group")),
                        Action.SUB, sourceIp));
                    break;
                case RequestCode.SET_MESSAGE_REQUEST_MODE:
                    SetMessageRequestModeRequestBody modeBody = decodeRequiredBody(
                        command, SetMessageRequestModeRequestBody.class, "message request mode");
                    result.add(DefaultAuthorizationContext.of(subject,
                        Resource.ofTopic(requireResource(modeBody.getTopic(), "topic")),
                        Action.SUB, sourceIp));
                    result.add(DefaultAuthorizationContext.of(subject,
                        Resource.ofGroup(requireResource(modeBody.getConsumerGroup(), "consumer group")),
                        Action.UPDATE, sourceIp));
                    break;
                case RequestCode.CHECK_CLIENT_CONFIG:
                    CheckClientRequestBody checkClientBody = decodeRequiredBody(
                        command, CheckClientRequestBody.class, "client config");
                    if (checkClientBody.getSubscriptionData() == null) {
                        throw new AuthorizationException("subscription is null.");
                    }
                    result.add(DefaultAuthorizationContext.of(subject,
                        Resource.ofTopic(requireResource(
                            checkClientBody.getSubscriptionData().getTopic(), "topic")),
                        Action.SUB, sourceIp));
                    result.add(DefaultAuthorizationContext.of(subject,
                        Resource.ofGroup(requireResource(checkClientBody.getGroup(), "consumer group")),
                        Action.SUB, sourceIp));
                    break;
                case RequestCode.QUERY_MESSAGE:
                    topic = Resource.ofTopic(requireResource(fields.get(TOPIC), "topic"));
                    result.add(DefaultAuthorizationContext.of(subject, topic, Arrays.asList(Action.SUB, Action.GET), sourceIp));
                    break;
                case RequestCode.HEART_BEAT:
                    HeartbeatData heartbeatData = decodeRequiredBody(command, HeartbeatData.class, "heartbeat");
                    for (ConsumerData data : heartbeatData.getConsumerDataSet()) {
                        if (data == null) {
                            throw new AuthorizationException("consumer data is null.");

View on GitHub (pinned to 293f588571)

Solutions

  1. Provide a valid SubscriptionData (topic, expression) in the request before sending it.
  2. Verify the consumer's subscription is registered and included in the request payload.
  3. Check that client and broker versions serialize SubscriptionData compatibly.

When it happens

Trigger: Occurs when building an authorization context for a request whose subscription data is null.

Common situations: A consumer request arrives without subscription data, or the subscription failed to decode.


AI-assisted analysis of apache/rocketmq@293f588571 (2026-08-14). Data as JSON: /api/errors/6cac9f22132e6f62. Report an issue: GitHub.