rabbitmq是amqp協議的實現。它主要包括以下元件:
這裡舉乙個topic模式的例子。
.name=spring-boot-rabbitmq
spring.rabbitmq
.host=10.20
.2.240
spring.rabbitmq
.port=5672
spring.rabbitmq
.username=guest
spring.rabbitmq
.password=guest
spring.rabbitmq
.publisher-confirms=false
spring.rabbitmq
.virtual-host=/
@configuration
public
class
rabbitconfig
}
@service
public
class
sender
}
.name=spring-boot-rabbitmq
spring.rabbitmq
.host=10.20
.2.240
spring.rabbitmq
.port=5672
spring.rabbitmq
.username=guest
spring.rabbitmq
.password=guest
spring.rabbitmq
.listener
.******
.acknowledge-mode=none
spring.rabbitmq
.virtual-host=/
@configuration
public
class
rabbitconfig
// topic 方式
@bean
public queue queuemessageall()
/*** binding_key=topic.# 模糊匹配routing_key為topic.***發過來的訊息加放佇列
*/@bean
public binding bindingexchangemessageall(final queue queuemessageall, final topicexchange topicexchange)
}
@component
public
class
receiver
}
網上看到一些例子,傳送方和接收方都寫在一起,讓人看起來很懵,
雖然 exchange,queue,binding,都可以在一端建,不過本著設計原則,這裡建議:
1. 傳送方只關注往哪個exchange 用什麼規則(routing key)發,因為你如果對外服務,只需要發布這個事件,而不需要關注誰要消費
2. 接收方需要定義對列,並將對列以某規則(binding key)繫結到exchange上,所以你要知道exchange、queue、binding key。
直接看**
spring.rabbitmq
.listener
.******
.acknowledge-mode=manual
@rabbitlistener(queues = constant.q_topic_message_all)
@rabbithandler
public
void
topicreceiver2(final message message, final channel channel, @header(amqpheaders.delivery_tag) long deliverytag) throws ioexception catch (exception ex) finally
}
具體demo:參考[email protected]:spadekingdom/demo-mq.git RabbitMQ 訊息廣播
rabbitmq訊息模型的核心理念是 發布者 producer 不會直接傳送任何訊息給佇列。事實上,發布者 producer 甚至不知道訊息是否已經被投遞到佇列。發布者 producer 只需要把訊息傳送給乙個交換機 exchange 交換機非常簡單,它一邊從發布者方接收訊息,一邊把訊息推送到佇列。...
RabbitMQ 廣播訊息
定義 廣播訊息是指生產者產生的訊息將分發給所有訂閱這個訊息的消費者,而普通的模式是 一批訊息可以被多個人共同消費,如consumer1可能消費1,3,5記錄,而consumer2可能消費的是2,4,6這種模組就是共同消費模組 而今天說的是廣播訊息,它是指一些訊息同時被推送到多個訂閱者,而這些訂閱者收...
RabbitMQ 廣播訊息
定義 廣播訊息是指生產者產生的訊息將分發給所有訂閱這個訊息的消費者,而普通的模式是 一批訊息可以被多個人共同消費,如consumer1可能消費1,3,5記錄,而consumer2可能消費的是2,4,6這種模組就是共同消費模組 而今天說的是廣播訊息,它是指一些訊息同時被推送到多個訂閱者,而這些訂閱者收...