1,引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
2,定义交换机 队列 路由key
/**
* 推送到Poster端专用
**/
public final static String POSTER_EXCHANGE = "DELIVERY-EXCHANGE";
public final static String POSTER_QUEUENAME = "DELIVERY-TRANCATE-OPERATION-QUEUE";
public final static String POSTER_ROUTINGKEY = "DELIVERY-TRANCATE-OPERATION-ROUTING";
/**
* 推送到BOSS端专用
**/
public final static String BOSS_EXCHANGE = "BOSS-EXCHANGE";
public final static String BOSS_QUEUENAME = "BOSS-TRADERECORD-QUEUE";
public final static String BOSS_ROUTINGKEY = "BOSS-TRADERECORD-ROUTING";
3,配置交换机,队列,绑定
@Configuration
public class MQConfig {
@Bean
public DirectExchange DExchange() {
return new DirectExchange(POSTER_EXCHANGE, true, false);
}
@Bean
public Queue queue1() {
return new Queue(POSTER_QUEUENAME);
}
@Bean
public DirectExchange BExchange() {
return new DirectExchange(BOSS_EXCHANGE, true, false);
}
@Bean
public Queue queue2() {
return new Queue(BOSS_QUEUENAME);
}
@Bean
public Binding binding1(Queue queue1, DirectExchange DExchange) {
return BindingBuilder.bind(queue1).to(DExchange).with(POSTER_ROUTINGKEY);
}
@Bean
public Binding binding2(Queue queue2, DirectExchange BExchange) {
return BindingBuilder.bind(queue2).to(BExchange).with(BOSS_ROUTINGKEY);
}
}
4,配置
spring:
# rabbitmq:
# host: 172.16.10.170
# port: 5672
# username: admin
# password: admin
rabbitmq:
host: 172.16.15.76
port: 5672
username: zxtfadmin
password: zxtfadmin
# publisher-confirms: true
# publisher-returns: true
# listener:
# direct:
# acknowledge-mode: auto
# simple:
# acknowledge-mode: auto
5,定义一个类
public class EmployeeBean {
private List<EmployeesBean> employees;
public List<EmployeesBean> getEmployees() {
return employees;
}
public void setEmployees(List<EmployeesBean> employees) {
this.employees = employees;
}
public static class EmployeesBean {
/**
* firstName : John
* lastName : Doe
*/
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
}
6,订阅频道 并启动项目
@Component
public class Consum {
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = POSTER_QUEUENAME, durable = "true"),
exchange = @Exchange(value = POSTER_EXCHANGE, durable = "true"),
key = "DELIVERY-TRANCATE-OPERATION-ROUTING.*"))
public void customer(String message) {
System.out.println("exchangeName:" + POSTER_EXCHANGE + " queueName:" + POSTER_QUEUENAME);
System.out.println(message);
}
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = BOSS_QUEUENAME, durable = "true"),
exchange = @Exchange(value = BOSS_EXCHANGE, durable = "true"),
key = "BOSS-TRADERECORD-ROUTING.*"))
public void bossCustomer(String message) {
System.out.println("exchangeName:" + BOSS_EXCHANGE + " queueName:" + BOSS_QUEUENAME);
System.out.println(message);
}
}
7,发送消息测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes={Application.class})
public class RabbitmqDemo {
private final static String testData = "{\n" +
"\"employees\": [\n" +
"{ \"firstName\":\"John\" , \"lastName\":\"Doe\" },\n" +
"{ \"firstName\":\"Anna\" , \"lastName\":\"Smith\" },\n" +
"{ \"firstName\":\"Peter\" , \"lastName\":\"Jones\" }\n" +
"]\n" +
"}";
public final String msg0 = "{\"createAccount\":\"5a232d65d599437e28034eba\",\"depotCode\":\"SC00281000052\",\"id\":1,\"orderType\":-1,\"sourceNo\":\"03156497102757511131855\",\"tradeAmount\":0,\"tradeNo\":\"654446471109742592\",\"tradeTime\":1564971028000,\"tradeType\":1}";
@Autowired
RabbitTemplate rabbitTemplate;
@Test
public void testSend(){
final EmployeeBean employeeBean = JSON.parseObject(testData, EmployeeBean.class);
ArrayList<EmployeeBean> list = Lists.newArrayList();
for (int i = 0; i < 30; i++) {
list.add(employeeBean);
}
rabbitTemplate.convertAndSend(POSTER_EXCHANGE,POSTER_ROUTINGKEY,JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect), msg->{
msg.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
msg.getMessageProperties().setConsumerQueue(POSTER_QUEUENAME);
return msg;
});
}
@Test
public void testSend1(){
final EmployeeBean employeeBean = JSON.parseObject(testData, EmployeeBean.class);
ArrayList<EmployeeBean> list = Lists.newArrayList();
for (int i = 0; i < 30; i++) {
list.add(employeeBean);
}
rabbitTemplate.convertAndSend(BOSS_EXCHANGE,BOSS_ROUTINGKEY,JSON.toJSONString(JSON.parseObject(msg0)), msg->{
msg.getMessageProperties().setDeliveryMode(MessageDeliveryMode.PERSISTENT);
msg.getMessageProperties().setConsumerQueue(BOSS_QUEUENAME);
return msg;
});
}
}
来源:https://blog.csdn.net/qq_28114645/article/details/99291183