pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
application.yml
server:
port: 802
spring:
rabbitmq:
host: IP
port: PORT
username:
password:
# 开启发送确认
# 开启发送失败退回
publisher-returns: true
# # 开启ACK,没用到所以没改格式
# listener.direct.acknowledge-mode=manual
# listener.simple.acknowledge-mode=manual
测试类
@SpringBootTest
class RabbitmqConsumerApplicationTests {
@Autowired
RabbitTemplate rabbitTemplate;
@Test
public void pubDirect(){
HashMap<String,String>hashMap = new HashMap<>();
hashMap.put("001","hello");
hashMap.put("002","rabbitmq");
rabbitTemplate.convertAndSend("awsa.direct","awsa.emps",hashMap);
}
@Test
public void pubFanout(){
HashMap<String,String>hashMap = new HashMap<>();
hashMap.put("001","hello");
hashMap.put("002","rabbitmq");
rabbitTemplate.convertAndSend("awsa.fanout","awsa.emps",hashMap);
}
@Test
public void receive(){
Object o = rabbitTemplate.receiveAndConvert("awsa.emps");
System.out.println(o.getClass());
System.out.println(o.toString());
}
}
生产环境大部分用RabbitListener进行监听
@Service
public class RabbitService {
@RabbitListener(queues = "awsa.emps")
public void receiveMsg(Object o){
System.out.println("receive message"+o.toString());
}
@RabbitListener(queues = "awsa.emps")
public void receiveMsg(Message msg){
System.out.println("receive message body" + new String(msg.getBody()));
System.out.println("message handle"+msg.getMessageProperties());
}
}
@SpringBootApplication
@EnableRabbit
public class RabbitmqConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(RabbitmqConsumerApplication.class, args);
}
}
若需要改json传输
@Configuration
public class MyAmqpConfig {
@Bean
public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter();
}
}