文章目录
一. 前言
你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。
消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。
二. RabbitMq简介:
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
下面将介绍Spring boot结合RabbitMq的步骤:
三. Springboot集成 RabbitMq
1. pom.xml 文件引入jar包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
2. application.yml加入RabbitMq的配置:
spring:
rabbitmq:
host : 127.0.0.1
port : 5672
username: guest
password: guest
3. 创建一个RabbitMq消息队列:
package com.plugs.RabbitMq;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitConfig {
@Bean
public Queue helloQueue() {
return new Queue("topic_name");
}
}
4. 创建RabbitMq消息队列接收方:
package com.plugs.RabbitMq;
import com.alibaba.fastjson.JSONObject;
import com.enjoypark.model.DemoOrder;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = "topic_name")
public class ReceiverMQ {
@RabbitHandler
public void process(String reciverStr) {
//对接受的url发送消息
try {
System.out.println(reciverStr);
} catch (Exception e) {
e.printStackTrace();
}
}
}
5. 创建消息队列发送方:
package com.plugs.RabbitMq;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class SenderMQ {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send(String context) {
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("topic_name", context);
}
}
四. 获取源码:
- 获取完整源码地址: https://download.csdn.net/download/penggerhe/11670196
- 公众号关注,免费领取: