dzmonkeyBLOG
2008-07-03 10:49 阅读 789
已采纳

在IBM MQ中创建topic完成pub/sub通信的问题

目的是在was中配置mq的连接工厂和目标和MQ通信,queue部分都已经实现了,但是在尝试topic时出现了问题:
mq中没有类似queue一样的topic对象,它是通过broker实现发布/订阅的。我照着网上的资料用MQJMS_PSQ.mqsc创建并且启动了队列管理器的代理控制器

[code="java"]C:\Documents and Settings\Administrator>dspmqbrk -m QM_TTL

队列管理器 QM_TTL 的 WebSphere MQ Publish/Subscribe 代理正在运行。[/code]

[color=red]但是,mq里的topic是什么样的概念呢? 我如何创建一个topic呢?

在was配置主题连接工厂和主题目标时,主题目标里有一项是“基本主题名”,怎么填呢? [/color]

后续:(“基本主题名”里随便填了个mq里的队列名,瞎填的)
was启动时,显示jndi绑定成功,但是在启动jms发送程序发送message的时候,was错误:
[code="java"][08-7-1 14:07:38:844 CST] 00000021 ConnectionEve A J2CA0056I: 连接管理器接收到来自资源 JMS$mq.topic.cf$JMSManagedConnection@528635340 的资源适配器的致命连接错误。接收到的异常为 com.ibm.mq.jms.NoBrokerResponseException: MQJMS5053: *** 无代理程序响应。请确保代理程序正在运行。如果您正在使用 WebSphere MQ 代理程序,检查您的 brokerVersion 是否设置为 V1 ***

[08-7-1 14:07:38:859 CST] 00000021 ConnectionEve A J2CA0056I: 连接管理器接收到来自资源 mq/topic/cf 的资源适配器的致命连接错误。接收到的异常为 com.ibm.mq.jms.NoBrokerResponseException: MQJMS5053: *** 无代理程序响应。请确保代理程序正在运行。如果您正在使用 WebSphere MQ 代理程序,检查您的 brokerVersion 是否设置为 V1 ***

[08-7-1 14:07:39:047 CST] 00000021 ServletWrappe E SRVE0068E: 无法调用 servlet TestTopicServlet 的 service() 方法。抛出异常:org.springframework.jms.UncategorizedJmsException: Uncategorized exception occured during JMS processing; nested exception is com.ibm.mq.jms.NoBrokerResponseException: MQJMS5053: *** 无代理程序响应。请确保代理程序正在运行。如果您正在使用 WebSphere MQ 代理程序,检查您的 brokerVersion 是否设置为 V1 **; nested exception is com.ibm.mq.MQException: MQJE001:完成码 2,原因码 2033

Caused by: com.ibm.mq.jms.NoBrokerResponseException: MQJMS5053: *
* 无代理程序响应。请确保代理程序正在运行。如果您正在使用 WebSphere MQ 代理程序,检查您的 brokerVersion 是否设置为 V1 ***

at com.ibm.mq.jms.MQPubSubServices.getBrokerResponse(MQPubSubServices.java:443)

at com.ibm.mq.jms.JMSServicesMgr.getBrokerResponse(JMSServicesMgr.java:173)

at com.ibm.mq.jms.MQMessageProducer.checkBrokerResponse(MQMessageProducer.java:2685)

at com.ibm.mq.jms.MQMessageProducer.publish(MQMessageProducer.java:1882)

at com.ibm.mq.jms.MQTopicPublisher.publish(MQTopicPublisher.java:222)

at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:976)

at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:1056)

at com.ibm.ejs.jms.JMSMessageProducerHandle.send(JMSMessageProducerHandle.java:1169)

at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:538)

at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:515)

.......

---- Begin backtrace for Nested Throwables

com.ibm.mq.MQException: MQJE001:完成码 2,原因码 2033

at com.ibm.mq.MQQueue.getMsg2(MQQueue.java:989)

at com.ibm.mq.jms.MQPubSubServices.getBrokerResponse(MQPubSubServices.java:410)

at com.ibm.mq.jms.JMSServicesMgr.getBrokerResponse(JMSServicesMgr.java:173)

at com.ibm.mq.jms.MQMessageProducer.checkBrokerResponse(MQMessageProducer.java:2685)

at com.ibm.mq.jms.MQMessageProducer.publish(MQMessageProducer.java:1882)

at com.ibm.mq.jms.MQTopicPublisher.publish(MQTopicPublisher.java:222)

at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProducer.java:976)

........ [/code]

谁能帮帮忙阿?
[b]问题补充:[/b]
回复“baallee”:

“BASIC.TOPIC.NAME”这个jndi是在was中配置的啊,那么这个配置怎么做呢?

was中配置主题目标时,有一项是“基本主题名”,怎么填呢?

[b]问题补充:[/b]
回复“lijie250 ”:
java代码呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    baalee baalee 2008-07-03 16:57

    IBM MQ 无须在服务器中设定TOPIC
    在程序运行时指定你期望的“基本主题名”

    spring的配置可能就是这样
    [code="xml"]
    class="org.springframework.jndi.JndiObjectFactoryBean">




    BASIC.TOPIC.NAME


    [/code]
    MQ 会为你创建 TOPIC 并管理他。

    点赞 评论 复制链接分享
  • baalee baalee 2008-07-03 17:29

    Base topic name
    WebSphere MQ 的 MA0C 代理中的主题名称。这个名称是任意的,但应该是唯一的和描述性的主题名称。

    你可以用这个:
    ExampleTopic

    点赞 评论 复制链接分享
  • lijie250 lijie250 2008-07-05 18:22

    [list=1]
    [*]
    [/list][code="java"][/code]

    点赞 评论 复制链接分享

相关推荐