[英]Durable Subscriptions in IBM MQ Java classes
我用下面的方法提到的創建持久訂閱這里 ,
public MQTopic accessTopic(java.lang.String topicName,
java.lang.String topicObject,
int options,
java.lang.String altUserId,
java.lang.String subscriptionName)
throws MQException
文檔指出, subscriptionName - This field is only required if the options parameter specified CMQC.MQSO_DURABLE, but if provided will be used by the queue manager for CMQC.MQSO_NON_DURABLE as well.
因此,我創建了如下主題。
qmanager.accessTopic("TOPICSTR",
"TOPICNAME",
CMQC.MQSO_DURABLE,
null,
"subscription")
但這會引發異常2046(07FE)(RC2046):MQRC_OPTIONS_ERROR。關於如何解決此問題以及使用IBM MQ Java類初始化持久預訂主題的任何想法?
首先,對IBM MQ文檔發出警告:
public MQTopic accessTopic(java.lang.String topicName,
java.lang.String topicObject,
int options,
java.lang.String altUserId,
java.lang.String subscriptionName)
throws MQException
我一直在嘗試讓IBM更新其MQ文檔,但它們的糖蜜速度很慢。 問題是,為MQTopic編寫Java代碼的人都使用了錯誤的變量字段名。 因此,當他們從Java代碼生成Java文檔時,將產生錯誤。
正確的定義是:
public MQTopic accessTopic(java.lang.String topicString,
java.lang.String topicObject, /* aka topic name */
int options,
java.lang.String altUserId,
java.lang.String subscriptionName)
throws MQException
第一個字段是“主題字符串”而不是“主題名稱”。 請參閱IBM博客文章的David Ware,其中描述了“主題字符串”,“主題名稱”和“主題對象”。 https://www.ibm.com/developerworks/community/blogs/messaging/entry/mq_topics_but_which_type?lang=en
接下來,您應該包括“如果停頓則失敗”標志:CMQC.MQSO_FAIL_IF_QUIESCING
我通常會打開一個非耐用的主題:
int openOptions = CMQC.MQSO_CREATE | CMQC.MQSO_FAIL_IF_QUIESCING | CMQC.MQSO_MANAGED | CMQC.MQSO_NON_DURABLE;
MQTopic subscriber = qMgr.accessTopic( topicString,
null,
CMQC.MQTOPIC_OPEN_AS_SUBSCRIPTION,
openOptions);
我想您需要使用更多選項:
CMQC.MQSO_CREATE | CMQC.MQSO_ALTER | CMQC.MQSO_DURABLE
從IBM文檔:
選項-打開訂閱主題后,以下有效選項如下所示。 如果需要多個選項,則可以將這些值加在一起或使用按位或運算符組合。
CMQC.MQSO_CREATE CMQC.MQSO_RESUME CMQC.MQSO_ALTER
如果未指定這些選項,則假定為CMQC.MQSO_CREATE + CMQC.MQSO_ALTER。 其他有效選項也可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.