流程图概括
1.引入依靠
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-amqp</artifactId>
- </dependency>
复制代码 2. 设置RabbitMQ毗连
在application.properties或application.yml中设置RabbitMQ服务器的毗连参数:
3.DirectExchange 直连型交换机
3.1消耗者
- @Configuration
- public class DirectConsumer {
- //注册一个队列
- @Bean //启动多次为什么不报错?启动的时候,它会根据这个名称Direct_Q01先去查找有没有这个队列,如果有什么都不做,如果没有创建一个新的
- public Queue queue(){
- return QueueBuilder.durable("Direct_Q01").maxLength(100).build();
- }
- //注册交换机
- @Bean
- public DirectExchange exchange(){
- //1.启动的时候,它会根据这个名称Direct_E01先去查找有没有这个交换机,如果有什么都不做,如果没有创建一个新的
- return ExchangeBuilder.directExchange("Direct_E01").build();
- }
- //绑定交换机与队列关系
- @Bean
- public Binding binding(Queue queue,DirectExchange exchange){
- return BindingBuilder.bind(queue).to(exchange).with("RK01");
- }
- //启动一个消费者
- @RabbitListener(queues = "Direct_Q01")
- public void receiveMessage(String msg){
- System.out.println("收到消息:"+msg);
- }
- }
复制代码 3.2生产者
- @Service
- public class DirectProvider {
- @Autowired
- private RabbitTemplate rabbitTemplate;
- public void send(Object message) {
- rabbitTemplate.convertAndSend("Direct_E01", "RK01", message);
- }
- }
复制代码 3.3 一个交换机对多个队列的特点:
3.4 一个队列对多个消耗者特点:要包管消息的有序性肯定要一个消息队列只毗连一个消耗者
4.FanoutExchange
4.1 消耗者
4.2生产者
5.TopicExchange
5.1 消耗者
5.1 生产者
6.业务对象作为消息
6.1 自界说转换器(须要举行范例转换)
- @Configuration
- public class RabiitConfig {
- @Bean // 将对象转化成json字符串
- public MessageConverter messageConverter(){
- return new Jackson2JsonMessageConverter();
- }
- }
复制代码 6.2 消耗者直接继承业务对象
- @RabbitListener(bindings=@QueueBinding(
- value = @Queue(name = "Q01", durable = "true",autoDelete = "false",
- arguments = @Argument(name="x-queue-mode",value = "lazy")),
- exchange =@Exchange(name = "E01", durable = "true",autoDelete = "false"),
- key = "RK01"))
- public void receiveMessage(RegisterOk registerOk){
- System.out.println("消费者 收到消息:"+registerOk);
- //新用户注册后,送100积分。
-
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |