当前位置: 首页 > 知识库问答 >
问题:

如何使用 MQQueueConnectionFactory 设置 ApplicationIdData?

鲁德佑
2023-03-14

尝试找出驼峰/Spring配置以使用 JMS 设置 ApplicationIdData。

我知道java方法如下,我在下面设置MQOO_SET_IDENTITY_CONTEXT

int putOptions =  MQConstants.MQPMO_SET_IDENTITY_CONTEXT;
pmo.options =putOptions;

然后我将应用程序 IdData 设置为:

MQMessage msg = new MQMessage();
msg.applicationIdData = "SomeId";
msg.writeString(qmessage);

Queue.put(msg, pmo);

问题是,如何使用JMS/camel/Spring配置设置applicationIdData。以下是我目前的骆驼配置。

<bean class="org.apache.camel.component.jms.JmsComponent" id="jmsConnection">
        <property name="connectionFactory" ref="mqConnectionFactoryWrapper" />
        <property name="acknowledgementModeName" value="AUTO_ACKNOWLEDGE" />
    </bean>

    <bean id="connectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
        <property name="hostName" value="${HOSTMNAME}" />
        <property name="port" value="${PORT}" />
        <property name="queueManager" value="${MQ_QMNAME}" />
        <property name="channel" value="${MQ_INTERNAL_CHANNEL}" />
        <property name="transportType" value="1" />

        <!-- Transport type 1 means pure TCP/IP without any local client -->
    </bean>

    <bean id="mqConnectionFactoryWrapper"
        class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="connectionFactory" />
        <property name="sessionCacheSize" value="500" />
    </bean>

    <bean id="jmsTransactionManager"
        class="org.springframework.jms.connection.JmsTransactionManager">
        <property name="connectionFactory" ref="mqConnectionFactoryWrapper" />
    </bean>

    <bean id="PROPAGATION_REQUIRES_NEW" 
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
        <property name="transactionManager" ref="jmsTransactionManager" />
        <property name="propagationBehaviorName" value="PROPAGATION_REQUIRES_NEW" />
    </bean>

我浏览了以下链接,找不到正确的答案

http://forum.spring.io/forum/spring-projects/integration/jms/97168-how-to-set-wmqconstants-wmq-mqmd-read-enabled-in-spring

http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.0.1/com.ibm.mq.csqzaw.doc/jm41030_.htm

https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q032010_.htm

共有1个答案

羊舌承
2023-03-14

我需要在骆驼配置中找到一种方法来设置目标中的一些属性并设置一些标头。我将标题中的目的地设置为

注意:设置 mdWriteEnabled=true 等于

 // Enable MQMD write
  dest.setBooleanProperty(WMQConstants.WMQ_MQMD_WRITE_ENABLED, true);

设置 mdMessageContext=1 等于

// Optionally, set a message context if applicable for this MD field
  dest.setIntProperty(WMQConstants.WMQ_MQMD_MESSAGE_CONTEXT, 
    WMQConstants.WMQ_MDCTX_SET_IDENTITY_CONTEXT);

然后将应用程序 IdData 设置为

完整代码:

<route id="ValidateAndAck" streamCache="true">
            <from uri="sql:{{ValidateCDMsg}}" />
            <setHeader headerName="CamelJmsDestinationName"> <constant>queue:///Q_Name?targetClient=1&amp;mdWriteEnabled=true&amp;mdMessageContext=1</constant></setHeader> 
            <setHeader headerName="mdWriteEnabled">  <simple>true</simple></setHeader> <!-- This may be redundant-->
            <setHeader headerName="mdMessageContext">  <simple>2</simple></setHeader> <!-- This may be redundant--> 
            <setHeader headerName="JMS_IBM_MQMD_ApplIdentityData" >
                <simple>APP_ID_NAME</simple>
            </setHeader>
            <setHeader headerName="JMS_IBM_MQMD_ApplOriginData" >
                <simple>APP_ID_NAME</simple>
             </setHeader> 
            <to uri="bean:ProcessBean?method=setProcessId" />

我不确定是否需要JMS_IBM_MQMD_ApplOriginData。

 类似资料:
  • 问题内容: 如何使用jQuery设置和取消设置Cookie,例如创建一个名为的Cookie 并将其值设置为? 问题答案: 2019年4月更新 Cookie的读取/操作不需要jQuery,因此请不要使用下面的原始答案。 转到https://github.com/js-cookie/js-cookie,然后在其中使用不依赖jQuery的库。 基本示例: 有关详细信息,请参见github上的文档。 参见

  • 问题内容: 该EclipseLink的文件说,我需要在我的pom.xml与Maven得到它下面的条目: 但是当我尝试使用注释时,NetBeans告诉我,找不到该类。确实如此:Eclipselink的javax.persistence包中没有Entity类。 我必须如何使用Maven设置Eclipselink? 问题答案: 该工件不提供JPA 2.0 API ,您需要添加: 为了简单起见,我建议使用

  • 问题内容: 我们有一个通常从Eclipse运行的测试套件。我们最近已经开始尝试获得更好的开发环境的过程。为此,我们已开始在加利福尼亚州建立我们的项目。如果在构建过程中可以运行测试套件,我们也希望这样做。为此,我认为我们需要一种从命令行执行测试套件的方法,以便我们可以将其集成并解析其输出。 我们如何设置以运行测试? 问题答案: 您可以在构建过程中创建一个ant任务,然后让Jenkins运行该任务 这

  • 我对Kubernetes是新来的。我正试图按照这个教程指导我如何使用minikube来设置本地服务。我能够使用教程中的服务运行。呼扎! 现在我想运行一个带有本地标记和构建的Docker映像的服务器。根据这篇文章,我所需要做的就是告诉我的计算机使用minikube docker守护进程,构建我的映像,并将设置为Never。 如何在哪里设置和?我在谷歌上搜索了很多结果,但我的“树林里的宝贝”状态导致了

  • 问题内容: 我试图在Eclipse中更新我的jre版本,我将jre 8添加到了已安装的JRE中,并选中了他。当我单击确定时,它给我一个错误: 它仅在我尝试使用JRE 8时发生。 有人知道如何解决这个问题吗? 我使用Indigo Eclipse。版本:Service Release 2。 问题答案: 创建新的工作区。创建新的Java项目,然后选择jvm8作为jvm。在现有项目中更改虚拟机非常困难,并

  • 有人知道解决这个问题的办法吗?我已经测试了在Modulepath和classpath中添加来自Selenium的外部jar。然而,两者似乎有相同的结果和错误。

  • 我在nodeJs服务器中使用mongoose(4.13.10)连接到mongodb实例 我使用游标来迭代我的数据库的记录,并对数据库进行多次查询,这需要很多时间,因此我得到游标未找到异常。我发现这些发生是由于游标的空闲超时,符合我的观察。 现在,我不想将标记为true,而是将超时设置为某个高值,通过该值,我确信长时间运行的查询将完成。但我无法找到任何留档或指导如何设置服务器参数。 如何设置此参数?

  • 那我试试这个 但是我有 如何设置xlabel和ylabel,然后将新图像另存为文件?