pom:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
配置:
spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.username=guest spring.rabbitmq.password=guest
Main类,启动rabbitmq注释。
@EnableRabbit public class DemoApplication {}
监控类Service,必须@EnableRabbit与@RabbitListener一起使用。
才可以有其他写法,也可以指定监控配置等,官网有写法说明:https://docs.spring.io/spring-amqp/docs/2.0.2.RELEASE/api/org/springframework/amqp/rabbit/annotation/EnableRabbit.html
@Service public class BookService { @RabbitListener(queues = "cw.news") public void receive(Book book){ System.out.println("收到消息:"+book); } }
配置类,解决JSON转换乱码问题
@Configuration public class AmqpConverter { @Bean public MessageConverter messageConverter(){ return new Jackson2JsonMessageConverter(); } }
往队列发送与接收消息:
@Autowired
RabbitTemplate rabbitTemplate;
public void contextLoads() { Map<String,Object> map = new HashMap<>(); map.put("msg","firstnews"); map.put("data", Arrays.asList("hello",123,true)); rabbitTemplate.convertAndSend("exchange-direct","cw.news",map); }//发送给交换器XXX,路由key为cw.news,数据为map。 public void receive(){ Object obj = rabbitTemplate.receiveAndConvert("cw.news"); System.out.println(obj.getClass()); System.out.println(obj); }
代码操作交换机(exchange)、队列(queues)、绑定(binding)等:
@Autowired AmqpAdmin amqpAdmin; public void createExchange(){ amqpAdmin.declareExchange(new DirectExchange("amqp-exchange")); }
值得一提的是,官网有很完整的样例,还是多语言的。
关于Erlang与RabbitMQ的安装:
一、Erlang与RabbitMQ
- RabbitMQ的官方安装目录是有空格的,需要另起炉灶,不能有带空格的目录。
- Erlang的命令得在管理员权限的CMD下才有效。
- RabbitMQ的版本要跟Erlang适配,官网有列表。
- 安装RabbitMQ的时候,计算机名不能是中文,如果是,改了再重装(删除后记得把C盘下的用户资料也删掉)。
- RabbitMQ装完后进入sbin目录,输入Rabbit MQ's Management Plugin,接着输入Net stop rabbitmq && net start rabbitmq重启RabbitMQ目录,登录http://localhost:15672,用户名:guest,密码:guest。
这时候guest都是默认的,可以通过cmd命令进行更改(或者直接在页面新增用户)。