从Azure Service总线队列接收消息时的NPE

时间:2016-12-01 18:43:01

标签: java azure microservices azureservicebus

接收来自队列的消息时的NPE。 (仅当队列中存在消息时)。我觉得反序列化消息存在问题。

显示java.lang.NullPointerException         at com.sun.jersey.api.client.ClientResponse.getResponseDate(ClientResponse.java:738)         在com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusRestProxy.receiveMessage(ServiceBusRestProxy.java:288)         在com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusRestProxy.receiveQueueMessage(ServiceBusRestProxy.java:225)         在com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusExceptionProcessor.receiveQueueMessage(ServiceBusExceptionProcessor.java:142)

RECEIVE_AND_DELETE选项删除消息并抛出NPE。

所有其他操作,如创建队列,发送消息等工作正常。有什么想法吗?

接收消息的代码

public void receiveMessage(String queueName) {
        try {
            ReceiveMessageOptions opts = ReceiveMessageOptions.DEFAULT;
            opts.setReceiveMode(ReceiveMode.PEEK_LOCK);

            while (true) {
                ReceiveQueueMessageResult resultQM
                        = service.receiveQueueMessage(queueName, opts);
                BrokeredMessage message = resultQM.getValue();
                if (message != null && message.getMessageId() != null) {
                    log.println("MessageID: " + message.getMessageId());
                    // Display the queue message.
                    log.print("From queue: ");
                    byte[] b = new byte[200];
                    String s = null;
                    int numRead = message.getBody().read(b);
                    while (-1 != numRead) {
                        s = new String(b);
                        s = s.trim();
                        System.out.print(s);
                        numRead = message.getBody().read(b);
                    }
                    log.println("");
                    log.println("Custom Property: "
                            + message.getProperty("MyProperty"));
                    // Remove message from queue.
                    log.println("Deleting this message.");
                    //service.deleteMessage(message);
                } else {
                    log.println("Finishing up - no more messages.");
                    break;
                    // Added to handle no more messages.
                    // Could instead wait for more messages to be added.
                }
            }
        } catch (Exception e) {
            log.print(e);
        }
    }

1 个答案:

答案 0 :(得分:0)

即使它正在抛出NPE,实际问题仍然是丢失的jar文件。这是jar文件列表

          <dependencies>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt-compute</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt-network</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt-sql</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt-storage</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt-websites</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-svc-mgmt-media</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-servicebus</artifactId>
                        <version>0.9.7</version>
                </dependency>
                <dependency>
                        <groupId>com.microsoft.azure</groupId>
                        <artifactId>azure-serviceruntime</artifactId>
                        <version>0.9.7</version>
                </dependency>
        </dependencies>