springboot整合Rabbitmq

Confirm 模式

添加mq工具类

package com.itcast.unitl;

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;

import java.util.concurrent.TimeoutException;

public class MQConnectionUtils {


   public static com.rabbitmq.client.Connection newConnection() throws IOException, TimeoutException {
 
      ConnectionFactory factory = new ConnectionFactory();

      factory.setHost("127.0.0.1");
     
      factory.setUsername("admin_yushengjun");

      factory.setPassword("123456");
     
      factory.setPort(5672);
   
      factory.setVirtualHost("/admin_host");
      com.rabbitmq.client.Connection connection = factory.newConnection();
      return connection;
   }

}

1.生产

Maven环境依赖

 

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.0.0.RELEASE</version>

</parent>

<dependencies>

 

<!-- springboot-web组件 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- 添加springbootamqp的支持 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-amqp</artifactId>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

</dependency>

<!--fastjson -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.49</version>

</dependency>

</dependencies>

application.yml

 

spring:

  rabbitmq:

  ####连接地址

    host: 127.0.0.1

   ####端口号   

    port: 5672

   ####账号

    username: guest

   ####密码  

    password: guest

   ### 地址

    virtual-host: /

交换机绑定队列

@Component

public class FanoutConfig {

 

// 邮件队列

private String FANOUT_EMAIL_QUEUE = "fanout_eamil_queue";

 

// 短信队列

private String FANOUT_SMS_QUEUE = "fanout_sms_queue";

// 短信队列

private String EXCHANGE_NAME = "fanoutExchange";

 

// 1.定义队列邮件

@Bean

public Queue fanOutEamilQueue() {

return new Queue(FANOUT_EMAIL_QUEUE);

}

 

@Bean

public Queue fanOutSmsQueue() {

return new Queue(FANOUT_SMS_QUEUE);

}

 

// 2.定义交换机

@Bean

FanoutExchange fanoutExchange() {

return new FanoutExchange(EXCHANGE_NAME);

}

 

// 3.队列与交换机绑定邮件队列

@Bean

Binding bindingExchangeEamil(Queue fanOutEamilQueue, FanoutExchange fanoutExchange) {

return BindingBuilder.bind(fanOutEamilQueue).to(fanoutExchange);

}

 

// 4.队列与交换机绑定短信队列

@Bean

Binding bindingExchangeSms(Queue fanOutSmsQueue, FanoutExchange fanoutExchange) {

return BindingBuilder.bind(fanOutSmsQueue).to(fanoutExchange);

}

}

生产者投递消息

@Component

public class FanoutProducer {

@Autowired

private AmqpTemplate amqpTemplate;

 

public void send(String queueName) {

String msg = "my_fanout_msg:" + new Date();

System.out.println(msg + ":" + msg);

amqpTemplate.convertAndSend(queueName, msg);

}

}

控制层调用代码

@RestController

public class ProducerController {

@Autowired

private FanoutProducer fanoutProducer;

 

@RequestMapping("/sendFanout")

public String sendFanout(String queueName) {

fanoutProducer.send(queueName);

return "success";

}

}

消费

Maven环境依赖

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.0.0.RELEASE</version>

</parent>

<dependencies>

 

<!-- springboot-web组件 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- 添加springbootamqp的支持 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-amqp</artifactId>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

</dependency>

<!--fastjson -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.49</version>

</dependency>

</dependencies>

邮件消费者

@Component

@RabbitListener(queues = "fanout_eamil_queue")

public class FanoutEamilConsumer {

@RabbitHandler

public void process(String msg) throws Exception {

System.out.println("邮件消费者获取生产者消息msg:" + msg);

}

}

 

短信消费者

@Component

@RabbitListener(queues = "fanout_sms_queue")

public class FanoutSmsConsumer {

@RabbitHandler

public void process(String msg) {

System.out.println("短信消费者获取生产者消息msg:" + msg);

}

}

application.yml

spring:

  rabbitmq:

  ####连接地址

    host: 127.0.0.1

   ####端口号   

    port: 5672

   ####账号

    username: guest

   ####密码  

    password: guest

   ### 地址

    virtual-host: /admin

server:

    port: 8081

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值