【问题标题】:Connect Rabbitmq to IBM MQ via spring integration通过 spring 集成将 Rabbitmq 连接到 IBM MQ
【发布时间】:2017-11-06 13:24:52
【问题描述】:

我们正在尝试将 RabbitMQ 与我们的系统应用程序(实际上是 MQSeries)集成。 有些应用程序不会升级代理(MQSeries => RabbitMQ),所以我们必须将消息从 RMQ 传输到 MQSeries

使用配置文件(入站 amqp RMQ => 出站 jms MQ)消息传输:150 条消息/秒。 在两个 mq 服务器之间有一个 mq 通道(MQ => MQ)大约是 12500 msg/秒。

两个问题:

  • 您有优化传输的建议吗?出站通道上的配置(如在 MQ 上打开会话)?
  • 在 pom.xml 和配置文件中的 xsd 使用哪个版本来使用最新版本的组件(例如 spring-amqp 2.0.0 没有冲突)?

感谢您的帮助

问候

埃里克

配置文件


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:int-amqp="http://www.springframework.org/schema/integration/amqp"
    xmlns:rabbit="http://www.springframework.org/schema/rabbit"
    xmlns:int-jms="http://www.springframework.org/schema/integration/jms"
    xmlns:int="http://www.springframework.org/schema/integration"
    xsi:schemaLocation="http://www.springframework.org/schema/integration/amqp http://www.springframework.org/schema/integration/amqp/spring-integration-amqp-4.3.xsd
        http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-4.3.xsd
        http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms-4.3.xsd
        http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.7.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<!-- Channel Definition  -->
<int:channel id="myChannel" />

<!-- Source RabbitMQ -->
<rabbit:connection-factory id="connectionFactory" username="guest" password="guest" addresses="adresse_ip:5672"/>
<int-amqp:inbound-channel-adapter channel="myChannel" queue-names="myqueue" connection-factory="connectionFactory"  auto-startup="true" id="inboundChannelAdapter" />

<!-- Destination MQSeries  -->
<bean id="jmsConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory" >
    <property name="queueManager" value="queue_manager_name" />
    <property name="hostName" value="hostname" />
    <property name="port" value="1414" />
    <property name="channel" value="SYSTEM.DEF.SVRCONN" />
    <property name="transportType" value="1" />
</bean>
<bean id="jmsQueue" class="com.ibm.mq.jms.MQQueue" depends-on="jmsConnectionFactory">
    <property name="baseQueueManagerName" value="queue_manager_name" />
    <property name="baseQueueName" value="queue_name" />
    <property name="targetClient" value="1" />
</bean> 

<int-jms:outbound-channel-adapter id="jmsOut" destination="jmsQueue" connection-factory="jmsConnectionFactory" channel="myChannel"/>

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <properties>
       <jms.version>2.0.1</jms.version>
       <mqseries.version>8.0.0.3</mqseries.version>
       <spring.amqp.version>1.7.4.RELEASE</spring.amqp.version>
       <spring.version>4.3.12.RELEASE</spring.version>
  </properties>

       <dependencies>

             <dependency>
                    <groupId>javax.jms</groupId>
                    <artifactId>jms</artifactId>
                    <version>1.1</version>
             </dependency>
             <dependency>
                    <groupId>javax.jms</groupId>
                    <artifactId>javax.jms-api</artifactId>
                    <version>${jms.version}</version>
             </dependency> 

             <!-- ******* -->
             <!--   mq    -->
             <!-- ******* -->
             <dependency>
                    <groupId>com.ibm</groupId> 
                    <artifactId>com.ibm.mq.allclient</artifactId> 
                    <version>${mqseries.version}</version> 
             </dependency>


             <!-- ******************* -->
             <!-- Spring dependencies -->
             <!-- ******************* -->
             <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-orm</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-aop</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-tx</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-beans</artifactId>
                    <version>${spring.version}</version>
             </dependency>

             <!-- but exclude commons-logging as we're using jcl-over-slf4j -->
             <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-core</artifactId>
                    <version>${spring.version}</version>
                    <exclusions>
                           <exclusion>
                                  <groupId>commons-logging</groupId>
                                  <artifactId>commons-logging</artifactId>
                           </exclusion>
                    </exclusions>
             </dependency>


             <!-- Integration avec MqSeries -->
             <dependency>
                    <groupId>org.springframework.integration</groupId>
                    <artifactId>spring-integration-core</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework.integration</groupId>
                    <artifactId>spring-integration-file</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework.integration</groupId>
                    <artifactId>spring-integration-amqp</artifactId>
                    <version>${spring.version}</version>
             </dependency>
             <dependency>
                    <groupId>org.springframework.integration</groupId>
                    <artifactId>spring-integration-jms</artifactId>
                    <version>${spring.version}</version>
             </dependency>

             <!-- AMQP spring dependencies -->
             <dependency>
                    <groupId>org.springframework.amqp</groupId>
                    <artifactId>spring-amqp</artifactId>
                    <version>${spring.amqp.version}</version>

             </dependency>
             <dependency>
                    <groupId>org.springframework.amqp</groupId>
                    <artifactId>spring-rabbit</artifactId>
                    <version>${spring.amqp.version}</version>
             </dependency>
       </dependencies>  
</project>

【问题讨论】:

    标签: rabbitmq spring-integration


    【解决方案1】:

    您应该将MQConnectionFactory 包装在CachingConnectionFactory 中,以避免为每个发送操作创建新的连接和会话。

    Spring AMQP 2.0.0 需要 Spring Framework 5.0.0 或更高版本(当前为 5.0.1)。

    【讨论】:

    • 使用 CachingConnectionFactory:700msg/s ;-) 使用 pom.xml 中的版本 2.0.0.RELEASE5.0。 0.RELEASE 我们为 groupid 'org.springframework.integration' 4.3.12.RELEASE 添加了一个新道具,因为:spring-integration-core :jar:5.0.0.RC1 或 spring-integration-core:jar:5.0.0.RELEASE 缺失 版本 4.3.12.RELEASE 有一个错误:无效;嵌套异常是 org.xml.sax.SAXParseException; 'rabbit:connection-factory' not found 你有什么想法吗?
    • 不要将 XML 放入 cmets;这很难读;改为编辑问题并评论您已这样做。 Spring Integration 5.0 将在几周内发布;现在,发布候选版在 Spring 里程碑 repo 中可用。 5.0.0.RC1。如果您使用的是 AMQP prefetch(它已从 2.0.0 中的旧默认值 (1) 增加)。
    猜你喜欢
    • 2021-09-25
    • 2019-12-31
    • 2020-04-02
    • 2022-11-08
    • 2015-01-09
    • 2011-03-04
    • 2011-02-09
    • 2016-01-21
    • 2015-11-06
    相关资源
    最近更新 更多