rabbitmq使用_通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道

rabbitmq使用

rabbitmq使用

Spring Integration消息通道默认情况下将消息存储在内存中。 这是因为内存速度快,易于实现,并且不会增加网络成本。 但是,在某些情况下,这可能会引起问题,因为如果应用程序崩溃或服务器意外关闭,所有消息都将丢失。 对于这种情况,Spring Integration引入了支持JMS和AMQP的消息通道,因此消息存储在JMS&AMQP代理中,而不是存储在内存中。

高级消息队列协议(AMQP)是消息协议的开放标准。 它允许应用程序异步,可靠和安全地进行通信。 RabbitMQ是支持AMQP标准的开源消息代理。 RabbitMQ最重要的功能之一就是高可用性队列。

在本文中,通过创建两个消息传递节点和一个覆盖两个RabbitMQ服务器的RabbitMQ集群来说明Spring Integration的AMQP支持的点对点消息通道方法。 两个消息传递节点开始使用RabbitMQ集群处理Order消息。 如果第一消息节点和第一RabbitMQ服务器意外关闭,第二消息节点和第二RabbitMQ服务器将继续处理Order消息,因此可以通过使用高可用性AMQP支持的通道来防止潜在的消息丢失和服务中断问题。

还建议使用Spring Integration进行消息处理文章介绍一下Spring Integration的主要组件。

订单消息系统的Spring集成流程如下:

si_flow

订单列表通过Order Gateway发送到Order Splitter的输入通道。 订单拆分器将订单列表拆分为订单消息,并将其发送到“订单流程服务激活器”。 processChannel是点对点AMQP支持的消息通道。 它创建了RabbitMQ集群管理的ha.rabbit.channel队列,并将订单消息发送到ha.rabbit.channel Rabbit队列以实现高可用性。

让我们看一下示例订单消息传递实现。

二手技术:

  • JDK 1.8.0_25
  • Spring4.1.4
  • Spring Integration 4.1.2
  • RabbitMQ服务器3.4.2
  • Maven 3.2.2
  • Ubuntu 14.04

项目层次结构如下:

蚀

步骤1:依存关系

Spring和Spring Integration Framework的依赖关系如下:

<properties>
        <spring.version>4.1.4.RELEASE</spring.version>
        <spring.integration.version>4.1.2.RELEASE</spring.integration.version>
    </properties>

    <dependencies>

        <!-- Spring 4 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Spring Integration dependencies -->
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-core</artifactId>
            <version>${spring.integration.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-amqp</artifactId>
            <version>${spring.integration.version}</version>
            <scope>compile</scope>
        </dependency>

    <dependencies>

第2步:rabbitmq.config

第一台RabbitMQ服务器的配置文件(rabbitmq.config)如下。 它应该放在../rabbitmq_server-version/etc/rabbitmq/下

[
 {rabbit, [ {tcp_listeners, [5672]},
 {collect_statistics_interval, 10000},
 {heartbeat,30},
 {cluster_partition_handling, pause_minority},
 {cluster_nodes, {[ 'rabbit@master',
                    'rabbit2@master'],
                  disc}} ] },
 {rabbitmq_management, [ {http_log_dir,"/tmp/rabbit-mgmt"},{listener, [{port, 15672}]} ] },
 {rabbitmq_management_agent, [ {force_fine_statistics, true} ] }
].

第二个RabbitMQ服务器的rabbitmq.config文件:

[
 {rabbit, [ {tcp_listeners, [5673]},
 {collect_statistics
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值