Springboot統合rabbitmq簡単な使用
3728 ワード
第一歩はまず頼りになることだ
ステップ2では、プロファイルで構成します.
ステップ3では、rabbitmqのconfig構成クラスを構成します.
ステップ4、送信クラスを作成します
第五歩、もう一人の消費者listenerが消費を監視してさっぱりしなさい.
それから自分でコントロールを書いてリクエストして、最後にコンソールが送信して受信したメッセージを印刷すればOKです.
長い間やってやっと基礎を理解して、問題があったら一緒に討論することを歓迎して、最後にマンチェスター・シティはチャンピオンで、プレミアリーグは冠を守って、瓜は牛をなくして追い詰めます
org.springframework.boot
spring-boot-starter-amqp
ステップ2では、プロファイルで構成します.
# rabbitmq springboot
spring.application.name=SpringBootRabbitMQ
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/graduation_info
#rabbitmq
rabbitmq.exchange=springBoot_exchange
rabbitmq.queue=springBoot_queue
rabbitmq.routingkey=key_direct
#rabbitmq
spring.rabbitmq.publisher-confirms=true
spring.rabbitmq.publisher-returns=true
ステップ3では、rabbitmqのconfig構成クラスを構成します.
@Configuration
public class RabbitConfig {
@Value("${rabbitmq.queue}")
public String QUEUE_NAME;
@Value("${rabbitmq.exchange}")
public String EXCHANGE_NAME;
@Value("${rabbitmq.routingkey}")
public String ROUTING_KEY;
// queue
@Bean
public Queue queue() {;
Map configMap = new HashMap<>();
configMap.put("exchange", EXCHANGE_NAME);
configMap.put("routing-key", ROUTING_KEY);
configMap.put("x-message-ttl", 10000);
return new Queue(QUEUE_NAME, true, false, false, configMap);
}
// exchange
@Bean
public DirectExchange exchange() {
return new DirectExchange(EXCHANGE_NAME, true, false);
}
// routing_key
@Bean
public Binding binding() {
return BindingBuilder.bind(queue()).to(exchange()).with(ROUTING_KEY);
}
}
ステップ4、送信クラスを作成します
@Component
@Slf4j
public class RabbitMqSend implements RabbitTemplate.ConfirmCallback{
private RabbitTemplate rabbitTemplate;
@Autowired
RabbitConfig rabbitConfig;
private RabbitAdmin rabbitAdmin;
@Autowired
public RabbitMqSend(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
rabbitTemplate.setConfirmCallback(this);
}
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
if (!ack) {
log.error("Sending RabbitMQ Object ERROR" );
}else {
log.info(" ");
}
}
/* rabbitmq */
public void sendMessage(final String message) throws IllegalArgumentException {
log.info("send message");
rabbitTemplate.send(rabbitConfig.EXCHANGE_NAME, rabbitConfig.ROUTING_KEY, buildMessage(message.getBytes()));
}
public static Message buildMessage(byte[] value) {
return MessageBuilder.withBody(value)
.setMessageId(
"collection-recsync-" + UUID.randomUUID().toString())
.build();
}
}
第五歩、もう一人の消費者listenerが消費を監視してさっぱりしなさい.
@Slf4j
@Component
public class RabbitListenerDemo {
@RabbitListener(queues="springBoot_queue")
public void receive(Message msg){
log.info(" :"+new String(msg.getBody()));
}
}
それから自分でコントロールを書いてリクエストして、最後にコンソールが送信して受信したメッセージを印刷すればOKです.
2019-05-13 16:29:24.748 INFO 69008 --- [nio-8080-exec-1] c.u.springboot.rabbitmq.RabbitMQManager : send message
2019-05-13 16:29:24.760 INFO 69008 --- [cTaskExecutor-1] c.u.s.rabbitmq.RabbitListenerDemo : :" "
2019-05-13 16:29:24.790 INFO 69008 --- [ 127.0.0.1:5672] c.u.springboot.rabbitmq.RabbitMQManager :
長い間やってやっと基礎を理解して、問題があったら一緒に討論することを歓迎して、最後にマンチェスター・シティはチャンピオンで、プレミアリーグは冠を守って、瓜は牛をなくして追い詰めます