阿里云服务器 网站模板,设计网站公司只找亿企邦,深圳seo网站,wordpress 标签别名Rabbit Windows安装教程 本文只做Demo案例的分享#xff0c;具体只是需自行百度
一、生产者
1.application.properties 配置Rabbit的基本信息
#rabbit 主机IP
spring.rabbitmq.host127.0.0.1
#rabbit 端口
spring.rabbitmq.port5672
#rabbit 账号 可自行创建 这里是默认的
…Rabbit Windows安装教程 本文只做Demo案例的分享具体只是需自行百度
一、生产者
1.application.properties 配置Rabbit的基本信息
#rabbit 主机IP
spring.rabbitmq.host127.0.0.1
#rabbit 端口
spring.rabbitmq.port5672
#rabbit 账号 可自行创建 这里是默认的
spring.rabbitmq.usernameguest
#rabbit 密码 可自行创建 这里是默认的
spring.rabbitmq.passwordguest
#rabbit 虚拟机地址 可自行指定 这里是默认的
spring.rabbitmq.virtual-host/
#主程序的端口 和 rabbit无关
server.port80812.pom文件 导入两个maven依赖 第一个是SpringBoot集成的rabbit 第二个是web依赖用来方便发消息
!--RabbitMq--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId
/dependency
!--Web 方便用来发消息--
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency3.Rabbit配置类 这里用的是主题模式也就是模糊匹配的模式 这里设置的是只要是rabbit.开头就会进入这个队列 更详细的方法意义 请自行百度
Configuration
public class RabbitConfig {public static final String EXCHANGE_NAME rabbit_exchange;public static final String QUEUE_NAME rabbit_queue;/*** 创建交换机* ExchangeBuilder有四种交换机模式* Direct Exchange直连交换机根据Routing Key(路由键)进行投递到不同队列。* Fanout Exchange扇形交换机采用广播模式根据绑定的交换机路由到与之对应的所有队列。* Topic Exchange主题交换机对路由键进行模式匹配后进行投递符号#表示一个或多个词*表示一个词。* Header Exchange头交换机不处理路由键。而是根据发送的消息内容中的headers属性进行匹配。* durable 交换器是否持久化false 不持久化true 持久化**/Beanpublic Exchange rabbitExchange(){return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();}/*** 创建队列* durable 队列是否持久化 队列调用此方法就是持久化 可查看方法的源码* deliveryMode 消息是否持久化1 不持久化2 持久化**/Beanpublic Queue rabbitQueue(){return QueueBuilder.durable(QUEUE_NAME).build();}/*** 绑定交换机和队列* bing 方法参数可以是队列和交换机* to 方法参数必须是交换机* with 方法参数是路由Key 这里是以rabbit.开头* noargs 就是不要参数的意思* 这个方法的意思是把rabbit开头的消息 和 上面的队列 和 上面的交换机绑定**/Beanpublic Binding rabbitBinding(Qualifier(rabbitExchange) Exchange exchange, Qualifier(rabbitQueue) Queue queue){return BindingBuilder.bind(queue).to(exchange).with(rabbit.#).noargs();}}4.Controller 这里整一个网页调用的形式进行发送信息
RestController
public class ProducerWebController {AutowiredProducerService producerService;RequestMapping(/sendMq)public String sendMq(RequestParam(mq) String mq){return producerService.sendMq(mq);}}5.Service 在service层注入RabbitTemplate convertAndSend 即是消息发送的方法
public interface ProducerService {public String sendMq(String mq);
}Service
public class ProducerServiceImpl implements ProducerService {AutowiredRabbitTemplate rabbitTemplate;/*** convertAndSend 参数* 第一个是交换机的名字* 第二个是队列的具体名字 因为是rabbit开头 因为RabbitConfig设置rabbit开头通配 所以会被监听到* 第三个是具体的消息**/Overridepublic String sendMq(String mq) {rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_NAME, rabbit.demo, mq);return 发送成功消息是 mq;}
}6.发送消息 启动生产者程序 浏览器输入 127.0.0.1/sendMq?mq测试
二、消费者
1.application.properties
spring.rabbitmq.host127.0.0.1
spring.rabbitmq.port5672
spring.rabbitmq.usernameguest
spring.rabbitmq.passwordguest
spring.rabbitmq.virtual-host/
server.port80822.Rabbit监听 只需要在消费者中创建一个监听即可监听到队列的消息 可以直接打印出Message消息
Component
public class ConsumerListener {/*** 设置监听哪一个队列 这个队列是RabbitConfig里面设置好的队列名字**/RabbitListener(queues rabbit_queue)public void listenQueue(Message message){System.out.println(new String(message.getBody()));}}