首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Wildfly中,监听外部ActiveMQ的MDB得到一个空JMSMessageId

在Wildfly中,监听外部ActiveMQ的MDB得到一个空JMSMessageId
EN

Stack Overflow用户
提问于 2019-06-25 00:37:33
回答 2查看 777关注 0票数 0

我正在测试Wildfly16 / JBoss 7.2与ActiveMQ Artemis 2.7的连接。

我已经编写了一个简单的MDB,它可以使用来自远程ActiveMQ Artemis服务器的消息。

我正确获取了有效载荷(文本消息)和CorrelationId,但收到的MessageId为空!这看起来很奇怪,而且非常烦人,因为我想实现请求/回复。

客户端,它能够直接发送/消费/浏览队列。当我使用这个客户端的消息时,我得到了MessageId、CorrelationId和所有我想要的东西。Wildfly 16、17和JBoss 7.2 (我都试过了)上出现了这个问题和一个消息驱动的Bean。

  • 我在Wildfly上部署的MDB的Jar没有依赖项(6Kb)

下面是MDB的代码

import java.util.Properties;
import java.util.logging.Logger;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;

import javax.jms.*;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.jboss.ejb3.annotation.ResourceAdapter;

@ResourceAdapter("activemq-ra-remote")
@MessageDriven(name = "JmsTestMDB", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "testReqQueue"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge")})
public class WildflyMdb implements MessageListener {
  private static final Logger LOGGER = Logger.getLogger(WildflyMdb.class.toString());

  public void onMessage(Message rcvMessage) {
    TextMessage txtMessage = null;
    try {
      if (rcvMessage instanceof TextMessage) {
    txtMessage = (TextMessage) rcvMessage;
       LOGGER.info("Received Message from queue: MessageId=" + rcvMessage.getJMSMessageID() + 
                   ", CorrelationId=" + rcvMessage.getJMSCorrelationID() +
                   ", Text='" + txtMessage.getText() + "'");

       LOGGER.info("rcvMessage (toString): " + rcvMessage.toString());

    } catch (Exception e) {
       LOGGER.severe("EXCEPTION:" + e.getMessage());
    }
 }

当我使用Java客户端发送以下消息时:

测试消息: ID:DEVTEMP-PC-49242-1561392550500-1:1:1:1:1

  • CorrelationId: CID:20190624180910

  • Text :'This is my
  • MessageId‘

我从Wildfly中的MDB获得以下日志:

16:23:29,694 INFO  [class com.fluide.mdb.WildflyMdb] (Thread-360 (ActiveMQ-client-global-threads)) Received Message from queue: MessageId=null, CorrelationId=CID:20190624180910, Text='This is my test message'
16:23:29,695 INFO  [class com.fluide.mdb.WildflyMdb] (Thread-360 (ActiveMQ-client-global-threads)) rcvMessage (toString): ActiveMQMessage[null]:PERSISTENT/ClientMessageImpl[messageID=946860, durable=true, address=testReqQueue,userID=null,properties=TypedProperties[__AMQ_CID=ID:DEVTEMP-PC-49242-1561392550500-0:1,_AMQ_GROUP_SEQUENCE=0,__HDR_BROKER_IN_TIME=1561392550749,_AMQ_ROUTING_TYPE=1,__HDR_ARRIVAL=0,__HDR_REPLY_TO=[0000 0011 6401 000D 7465 7374 5265 7370 5175 6575 65),__HDR_COMMAND_ID=5,JMSCorrelationID=CID:20190624180910,__HDR_PRODUCER_ID=[0000 0039 7B01 0025 4944 3A44 4556 5445 4D50 2D50 432D 3439 3234 322D 3135  ... 31 3339 3235 3530 3530 302D 313A 3100 0000 0000 0000 0100 0000 0000 0000 01),__HDR_MESSAGE_ID=[0000 004C 6E00 017B 0100 2549 443A 4445 5654 454D 502D 5043 2D34 3932 3432  ...  0000 0000 0001 0000 0000 0000 0001 0000 0000 0000 0001 0000 0000 0000 0000),__HDR_DROPPABLE=false]]

正如您所看到的,MessageId返回为null,这看起来并不正确。有什么想法吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56740744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档