Многократная долговременная подписка JMS на одну тему

Я начал JMS в течение недели. Я создал JMS, используя Netbeans, Maven и Glassfish.

У меня есть один производитель и один потребитель длительного пользования, и я хотел добавить еще одного потребителя длительного пользования в ту же тему(не в очередь). Возможно ли это сделать? потому что я хочу, чтобы все потребители потребляли все сообщения, отправляемые производителем, независимо от того, находятся ли потребители в автономном режиме или нет.

Любой совет? Спасибо

public class DurableReceive {

@Resource(lookup = "jms/myDurableConnectionFactory")
private static ConnectionFactory connectionFactory;

@Resource(lookup = "jms/myNewTopic")
private static Topic topic;

public static void main(String[] args) {
    Destination dest = (Destination) topic;
    JMSConsumer consumer;
    boolean messageReceived = false;
    String message;
    System.out.println("Waiting for messages...");

    try (JMSContext context = connectionFactory.createContext();) {
        consumer = context.createDurableConsumer(topic, "Subscriber1");
        while (!messageReceived) {
            message = consumer.receiveBody(String.class);
            if (message != null) {
                System.out.print("Received the following message: " + message);
                System.out.println("(Received date: " + new Date() + ")\n");
            } else {
                messageReceived = true;
            }
        }
    } catch (JMSRuntimeException e) {
        System.err.println("@#$%RuntimeException occurred: " + e.toString());
        System.exit(1);
    }
}

}

1 ответ

Решение

Вы можете установить разные clientID для разных постоянных потребителей. Jms-брокер использует комбинацию subscriptionName и clientId для идентификации уникального клиента (поэтому, если ваш подписчик имеет уникальный clientID - он может получать собственные сообщения). Вы можете установить clientID в вашем JmsContext.

Другие вопросы по тегам