springboot整合RabbitMQ
- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
- 配置文件修改
spring.application.name=sp
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=root
spring.rabbitmq.password=123456
- 配置类
@Configuration
public class RabbitConfig {
@Bean
public Queue helloQueue() {
return new Queue("hello");
}
}
- 使用
- 消费者
@Component
@RabbitListener(queues = "hello")
public class Receiver {
@RabbitHandler
public void process(String hello) {
System.out.println("Receiver : " + hello);
}
}
- 生产着
@Component
public class Sender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String context = "hello " + new Date();
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("hello", context);
}
}
- 如果要整合springclould的bus
- 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
- 接收消息
@StreamListener(Sink.INPUT)
public void receive(Object payload) {
logger.info("Received: " + payload);
}
- 发送消息
//@EnableBinding(value = {SinkSender.SinkOutput.class})
public class SinkSender {
private static Logger logger = LoggerFactory.getLogger(HelloApplication.class);
@Bean
@InboundChannelAdapter(value = SinkOutput.OUTPUT, poller = @Poller(fixedDelay = "2000"))
public MessageSource<Date> timerMessageSource() {
return () -> new GenericMessage<>(new Date());
}
@Transformer(inputChannel = Sink.INPUT, outputChannel = SinkOutput.OUTPUT)
public Object transform(Date message) {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(message);
}
public interface SinkOutput {
String OUTPUT = "input";
@Output(SinkOutput.OUTPUT)
MessageChannel output();
}
}