java为什么我的消息消费者不接收所有其他消息?
我已经编写了一些代码,使用运行在Glassfish 4服务器上的ActiveMQ将TestMessages推送到队列上 如果我连续发送消息“A”、“B”、“C”、“D”、“E”、“F” 我只收到“A”、“C”、“E”
有人知道为什么吗
消息生产者
public void sendMessage(String msg) {
try {
if (session == null) {
session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
queue = session.createQueue(QUEUE_NAME);
}
messageProducer = session.createProducer(queue);
Message message = createMessage(msg);
messageProducer.send(message);
} catch (NamingException nex) {
System.out.println("Messager - naming exception" + nex.getLocalizedMessage());
} catch (JMSException jex) {
System.out.println("Messager - JMS exception" + jex.getLocalizedMessage());
}
}
消息消费者
public class Listener extends Thread implements MessageListener {
private void run() {
try {
connectionFactory = new ActiveMQConnectionFactory(AMQ_USER, AMQ_PASS, url);
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
queue = session.createQueue(QUEUE_NAME);
consumer = session.createConsumer(queue);
consumer.setMessageListener(this);
connection.start();
} catch (NamingException nex) {
log.error("Error in run()", nex);
} catch (JMSException jex) {
log.error("Error in run()", jex);
}
}
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
TextMessage textMessage = (TextMessage) message;
if (textMessage != null) {
System.out.println(textMessage.getText());
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
提前谢谢 标记
# 1 楼答案
这里显而易见的答案是,在该目的地上运行着多个消费者。每当一个队列有多个使用者时,消息就在它们之间进行负载平衡。您可以通过JMX或使用Web控制台连接到代理,并检查队列上的订阅以查看有多少订阅