Tech&WK_Architecture_EIP_Message_RabbitMQ_SpringBoot

target : implement enterprise integration pattern


1. MQ Bus rabbitmq spring boot config

为嵌入式 RabbitMQ 服务器添加依赖项。
<dependency>
    <groupId>io.arivera.oss</groupId>
    <artifactId>embedded-rabbitmq</artifactId>
    <version>1.4.0</version>
</dependency>

在demo 构建中体现的问题:

1. 启用重试功能 

2. 启用@EnableScheduling 注解


section: 使用 RabbitMQ 在 Spring boot 实现 AMQP

application.property 注意配置

 1 # MQ RabbitMQ
 2 spring.rabbitmq.host=127.0.0.1
 3 spring.rabbitmq.port=5672
 4 spring.rabbitmq.username=guest
 5 spring.rabbitmq.password=guest
 6 
 7 #客户机应连接到的地址列表,多个地址之间以逗号分隔
 8 #spring.rabbitmq.addresses=
 9 # 连接超时实践,默认为空,0表示从不超时
10 #spring.rabbitmq.connection-timeout=
11 #连接到代理时使用的虚拟主机
12 #spring.rabbitmq.virtual-host=
13 
14 #用来发送操作的默认交换机的名称,默认空
15 #spring.rabbitmq.template.exchange=
16 #用来发送操作的默认路由键的键值,默认为空
17 #spring.rabbitmq.template.routing-key=
18 #接受操作的超时时间,默认为0,表示永不超时
19 #spring.rabbitmq.template.receive-timeout=
20 #发送-接收操作的超时时间,默认为5秒钟
21 #spring.rabbitmq.template.reply-timeout=
22 
23 #template实例的重试逻辑,默认禁用。
24 spring.rabbitmq.template.retry.enabled=true
25 #尝试发送消息的次数,默认为3次
26 #spring.rabbitmq.template.retry.max-attempts=
27 #第一次和第二次尝试发送消息之间的间隔,默认时1秒
28 #spring.rabbitmq.template.retry.initial-interval=
29 #再次尝试发送消息的最大时间间隔,默认时10秒
30 #spring.rabbitmq.template.retry.max-interval=
31 #应用于前一个间隔的程数,默认为1.0
32 #spring.rabbitmq.template.retry.multiplier=
33 
34 #侦听器容器的类型,direct 和 simple, 默认是 simple
35 #spring.rabbitmq.listener.type=direct
36 #容器默认模式,默认为空
37 #spring.rabbitmq.listener.simple.acknowledge-mode=
38 #单个请求中处理的消息数量,默认为空
39 #spring.rabbitmq.listener.simple.prefetch=
40 #是否将被拒绝的消息重新放入队列中
41 #spring.rabbitmq.listener.simple.default-requeue-rejected=
42 #侦听器触发器线程的最小数量
43 #spring.rabbitmq.listener.simple.concurrency=
44 #侦听器触发器线程的最大数量
45 #spring.rabbitmq.listener.simple.max-concurrency=
46 #单个事务中处理的消息数量,为了获得最佳结果,该属性值应小于等于prefetch值
47 #spring.rabbitmq.listener.simple.transaction-size=
48 # 容器确认模式,默认为空
49 #spring.rabbitmq.listener.direct.acknowledge-mode=
50 #单个请求中可以处理的消息数量,默认为空
51 #spring.rabbitmq.listener.direct.prefetch=
52 #是否将被拒绝的消息重新放入队列中
53 #spring.rabbitmq.listener.direct.default-requeue-rejected=
54 #每个队列的消费者数量,默认值为1
55 #spring.rabbitmq.listener.direct.consumers-per-queue=

基础: 如有 Scheduled 则要在 Configuration 时启用 @EnableSchduling

Spring boot rabbit MQ 重要配置

1. application.properties  配置 host user pwd , 重试策略等

2.使用 Json 数据格式传输 ,配置转换器

3. Sender 的 配置, Springboot 自动注入 RabbitMQ , 结合 Step2 调用 convertAndSend( exchanger, routingKey, object) 

 4. Receiver

如同 Sender, 配置 Converter ,Jackson2JsonMessageConveter

@RabbitListener 在 @Bean 上,将用作传入消息的消息侦听器,Spring boot 会构造一个消息侦听器容器,注解的方法将接收传入的消息.

5 发送者接收确认消息.


section : 使用 JMS 在 Spring boot 中

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.jms</groupId>
            <artifactId>javax.jms-api</artifactId>
            <scope>provided</scope>
        </dependency>

配置 Convert

 


Jms 相关 test


2020-11-29

RabbitMQ basic.propertities  Message_id, Cor-relation-id  消息流 的唯一性及可 业务流, 可跟踪性

原始

Spring boot rabbimtMQ 增加 CorrelationData


2020-12-01

blocking receive return result


2020-12-24

Spring boot, RabbitMQ 将 JSON格式的数据传递.


2020-12-28

2020-12-28

Spring boot Rabbit Jackson2 Converter

 1 public class RabbitListenerConfig implements RabbitListenerConfigurer {
 2 
 3     @Override
 4     public void configureRabbitListeners(RabbitListenerEndpointRegistrar rabbitListenerEndpointRegistrar) {
 5         rabbitListenerEndpointRegistrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory());
 6     }
 7 
 8     @Bean
 9     MessageHandlerMethodFactory messageHandlerMethodFactory(){
10         DefaultMessageHandlerMethodFactory messageHandlerMethodFactory =
11                 new DefaultMessageHandlerMethodFactory();
12         messageHandlerMethodFactory.setMessageConverter(mappingJackson2MessageConverter());
13         return messageHandlerMethodFactory;
14     }
15 
16     @Bean
17     MappingJackson2MessageConverter mappingJackson2MessageConverter(){
18         return new MappingJackson2MessageConverter();
19     }
20 }
 1 public class RabbitmqConfig {
 2 
 3     @Bean
 4     @Scope("prototype")
 5     public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory){
 6         final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
 7         rabbitTemplate.setMessageConverter(jackson2MessageConverter());
 8         return rabbitTemplate;
 9     }
10 }

platform-foreground 创建 Exchange 时,之前是 Direct 类型,改为 Topic 时, 报错提示rabbit 无法改变.

创建新的 Topic exchange 也受影响无法创建相应Queue,暂未解决.

进入Rabbit ctl 进行管理操作:


2020-12-30

Listener 接收到协作方传回的消息. 继续工作流.


 

Spring boot , RabbitMQ 配置

RabbitMQ 配置 virtual-host : 

1. admin 添加 虚拟机

 

2. 添加用户

3. 虚拟机分配用户

4.spring config

 

 

 

 

 


 

posted @ 2020-11-03 09:21  君子之行  阅读(10)  评论(0)    收藏  举报