一:Rbbitmq节点:将传入消息有效负载发布到rabbitmq
组态:
- Exchange name pattern(交换机名称):要将消息发布到交换机,可以使用消息元数据属性解析的静态字符串的式:如${devicType}。(前提是在rabbitmq服务器中要存在该交换机名称,否则会报错找不到指定通道)
- Routing key pattern(路由秘钥):可以是静态字符串,也可以使用消息元数据属性解析的静态字符串的式,如:${devicType}
- Message properties(消息属性):可选路由报头:
BASIC
TEXT_PLAIN
MINIMAL_BASIC
MINIMAL_PERSISTENT_BASIC
PERSISTENT_BASIC
PERSISTENT_TEXT_PLAIN
- Host(IP地址):172.0.0.1
- Port(端口号):5672
- Virtual host(虚拟主机):连接到代理时要使用的虚拟主机,可在Rbbit MQ可视化界面Admin > Users >连接用户列表中查看
- Username(用户名):guest
- Password(密码):guest
- Automatic recovery(自动恢复):启动或禁用自动连接恢复
- Connection timeout(连接超时):连接TCP建立超时(毫秒);0为无限
- Handshake timeout(握手超时):AMQP0-9-1协议握手超时,以(毫秒)为单位
- Client properties(设备端属性):连接启动期间发送到服务器的其它属性
Success:表示成功
failure :表示失败
二: RabbitMQ技术知识点
- 简介:RabbitMQ作为一个消息队列提供一个通用的消息发松和接收平台,并且保证消息在传输过程中的安全可靠。
消息由client发送,rabbitmq接收到消息之后通过交换机转发到对应的队列上面。Worker会从队列中获取未被读取的数据处理。
有4中不同的交换机类型:
1.扇形交换机:fanout
2.直连交换机:direct
3.主题交换机:topic
4.首部交换机:headers
- fanout:扇形交换机是最基本的交换机类型,它所能做的事情非常简单—广播消息。扇形交换机会把能接收到的消息全部发送给绑定在自己身上的队列。
- direct:直连交换机是一个带路由功能的交换机,一个队列会和一个交换机绑定,除此之外在绑定一个routing_key,当消息被发送的时候,需要指定一个binding_key,这个消息被送达交换机的时候,就会被这个交换机送到指定的队列里面去。
- topic:直连交换机的routing_key方案非常简单,如果我们希望一条消息发送给多个队列,那么这个交换机需要绑定上非常多的routing_key,假设每个交换机上都绑定一堆的routing_key连接到各个队列上。那么消息的管理就会异常的困难。
所以rabbitmq提供了一种主题交换机,发送到主题交换机上的消息需要携带指定规则的routing_key,主题交换机会根据这个规则将数据发送到对应的(多个)队列上。
主题交换机的routing_key需要有一定的规则,交换机和队列的binding_key需要采用*.#.*….的格式,每个部分用.分开,其中:
*表示一个单词
#表示任意数量(0个或多个)单词 - headers:首部交换机是忽略routing_key的一种路由方式。路由器和交换机路由的规则是通过headers信息来交换的,这个有点像http的headers。将一个交换机声明成首部交换机,绑定一个队列的时候,定义一个hash的数据结构,消息发送的时候,会携带一组hash数据结构的信息,当hash的内容匹配上的时候,消息就会被些人队列。
绑定交换机和队列的时候,hash结构需要携带一个键“x-match”,这个键的value可以使any或者all,这代表消息携带的hash是全部匹配(all),还是仅匹配一个键(any)就可以了,相比直连交换机,首部交换机的优势是匹配的规则不被限制为字符串(String)