【问题标题】:Cannot create durable subscriber (Glassfish 4)无法创建持久订阅者 (Glassfish 4)
【发布时间】:2018-05-16 04:05:11
【问题描述】:

我正在尝试在 glassfish 4 上测试持久订阅,但出现错误。代码:

Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber subscriber = session.createDurableSubscriber((Topic) context.lookup("jms/Topic"), "testDurableSubName");
subscriber.setMessageListener(this);
con.start();

错误是:

creating a topic subscriber ....
Feb 02, 2014 11:19:38 PM org.hibernate.validator.internal.util.Version <clinit>
INFO: HV000001: Hibernate Validator 5.0.0.Final
Feb 02, 2014 11:19:38 PM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter: Version:  5.0  (Build 14-e) Compile:  April 12 2013 0104
Feb 02, 2014 11:19:38 PM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter starting: broker is REMOTE, connection mode is TCP
Feb 02, 2014 11:19:38 PM com.sun.messaging.jms.ra.ResourceAdapter start
INFO: MQJMSRA_RA1101: GlassFish MQ JMS Resource Adapter Started:REMOTE
javax.jms.IllegalStateException: [C4053]: Invalid client ID - ""
closing jms connection...
    at com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.checkClientIDWithBroker(UnifiedSessionImpl.java:699)
    at com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.createDurableSubscriber(UnifiedSessionImpl.java:440)
    at com.sun.messaging.jmq.jmsclient.UnifiedSessionImpl.createDurableSubscriber(UnifiedSessionImpl.java:330)
    at com.sun.messaging.jms.ra.SessionAdapter.createDurableSubscriber(SessionAdapter.java:339)

【问题讨论】:

    标签: jms glassfish-4


    【解决方案1】:

    忘记在连接时设置 clientid,例如con.setClientID(InetAddress.getLocalHost().getHostName());

    持久订阅者需要连接才能设置 ClientID。它可以是任何唯一的字符串,例如主题名称 + 消费者 ID。进行此更改后,它起作用了。

    【讨论】:

    • 只有持久订阅者才会使用客户端 ID ... 否则不需要。
    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2017-01-24
    • 2015-09-01
    • 2017-11-08
    • 1970-01-01
    • 2018-01-15
    • 2013-04-13
    相关资源
    最近更新 更多