MDB未使用Jboss 7.1中队列中的消息

MDB未使用Jboss 7.1中队列中的消息,jboss,jms,hornetq,message-driven-bean,Jboss,Jms,Hornetq,Message Driven Bean,我正在使用JBoss7.1,并将发送者配置为将消息发送到Hornet队列。我可以在Jboss管理控制台中看到,一旦发送方发送消息,消息计数就会增加,但MDB没有使用消息。发送方和使用者都在同一个应用程序(同一个java进程/jvm)中运行。下面是jboss Standalone-full.xml中的配置 <jms-connection-factories> <connection-factory name="InVmConnection

我正在使用JBoss7.1,并将发送者配置为将消息发送到Hornet队列。我可以在Jboss管理控制台中看到,一旦发送方发送消息,消息计数就会增加,但MDB没有使用消息。发送方和使用者都在同一个应用程序(同一个java进程/jvm)中运行。下面是jboss Standalone-full.xml中的配置

 <jms-connection-factories>
                    <connection-factory name="InVmConnectionFactory">
                        <connectors>
                            <connector-ref connector-name="in-vm"/>
                        </connectors>
                        <entries>
                            <entry name="java:/ConnectionFactory"/>
                        </entries>
                    </connection-factory>
                    <connection-factory name="RemoteConnectionFactory">
                        <connectors>
                            <connector-ref connector-name="netty"/>
                        </connectors>
                        <entries>
                            <entry name="RemoteConnectionFactory"/>
                            <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                        </entries>
                    </connection-factory>
                    <pooled-connection-factory name="hornetq-ra">
                        <transaction mode="xa"/>
                        <connectors>
                            <connector-ref connector-name="in-vm"/>
                        </connectors>
                        <entries>
                            <entry name="java:/JmsXA"/>
                        </entries>
                    </pooled-connection-factory>
                </jms-connection-factories>

                <jms-destinations>
                    <jms-queue name="testQueue">
                        <entry name="queue/MyQueue"/>
                        <entry name="java:jboss/exported/jms/queue/test"/>
                    </jms-queue>
                </jms-destinations>
MDB:


jboss日志中没有错误或异常。我可以看到消息进入队列,但没有被MDB使用。提前感谢。

您的发件人应该发送到“/jms/queue/test”而不是“queue/MyQueue”。只有“/jms/queue/test”在外部公开。
假设它在一个单独的JVM中运行。

让发送方自动确认让我感到困扰,我还没有完成HornetQ,但我似乎记得在ActiveMQ中有问题……也看到您正在使用XA,消息是否已写入,但事务尚未完成,因此无法将消息传递给MDB?否则事情看起来很正常。@ScottSosna。。谢谢你的回复。我试图删除自动确认,但MDB仍无法启动。我使用了相同的配置,创建了两个独立的应用程序,运行在Jboss上,一切正常。我实际上考虑的是发送者,而不是消费者,但我不确定。
Context context = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory)context.lookup("ConnectionFactory");
QueueConnection connection = factory.createQueueConnection();
QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
Queue queue = (Queue)context.lookup("queue/MyQueue");
QueueSender sender = session.createSender(queue);

//1. Sending TextMessage to the Queue 
TextMessage message = session.createTextMessage();
message.setText("Hello EJB3 MDB Queue!!!");
sender.send(message);
@MessageDriven(name="MessageDistributor", activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/MyQueue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge")})
public class MessageReceiver implements MessageListener  {  
 public void onMessage(Message message) {
        System.out.println("Message received from Queue...");
    }
}