我有一个场景,我有超过4个客户端,我想向所有客户端发送单个队列消息。我没有承认客户端。所以任何人都可以从队列中获取该消息。但情况是我想知道消费者消费者的数量。任何人都可以帮我计算消费者数量。
下面是我写的代码。
public static boolean sendMessage(String messageText)
{
try {
StompConnection connection = new StompConnection();
HashMap<String, String> header = new HashMap<String, String>();
header.put(PERSISTENT, "true");
connection.open(URLhost, port);
connection.connect("", "");
connection.begin("MQClient");
Thread.sleep(100);
connection.send(queuePath, messageText, "MQClient", header);
connection.commit("MQClient");
connection.disconnect();
return true;
} catch (Exception e) {
throw new BasicException(AppLocal.getIntString("ActiveMQ service ERROR"), e);
}
}
public static String receiveMessage() {
try {
StompConnection connection = new StompConnection();
connection.open(URLhost, port);
connection.connect("", "");
connection.subscribe(queuePath, Subscribe.AckModeValues.INDIVIDUAL);
connection.begin("MQClient");
Thread.sleep(1000);//below not a good NO DATA test .. worked by making thread sleep a while
if (connection.getStompSocket().getInputStream().available() > 1)
{
StompFrame message = connection.receive();
connection.commit("MQClient");
connection.disconnect();
return message.getBody();
}
else
return "";
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
答案 0 :(得分:2)
如果您要写入队列,那么只有一个消费者会收到该消息。点对点消息传递的整个目标是只有一个消费者会收到消息。
如果您想发送消息并让所有消费者接收消息,那么您需要使用主题而不是队列。
答案 1 :(得分:1)
如果切换到某个主题,多个客户端可以使用相同的消息。
来确定消息的消耗量