代码 sie-snest-rabbit-mq-master.zip
App sie-snest-rabbitmq-v1.0.0.RELEASE.jar
基础使用
添加配置
不推荐使用,在 application.properties
配置文件添加以下配置。
因为如果需要修改配置,需要重启环境。
rabbitmq.host=127.0.0.1
rabbitmq.port=5672
rabbitmq.username=admin
rabbitmq.password=password
推荐使用:建议作为APP的配置信息在配置中心进行配置。例:在应用App的app.json里配置rabbitmq的配置信息。
"appConfig": {
"host": {
"value": "",
"desc": "rabbitmq的host",
"required": false
},
"port": {
"value": "",
"desc": "rabbitmq的port",
"required": false
},
"username": {
"value": "",
"desc": "rabbitmq的username",
"required": false
},
"password": {
"value": "",
"desc": "rabbitmq的password",
"required": false
}
}
添加 rabbitmq 应用
可以通过应用市场安装 base-rabbitmq 应用与业务应用在同一个容器内。
注意:如果业务应用容器没有base-rabbitmq,调用时会出现系统异常。
添加应用依赖
在需要使用 RabbitMQ 的 app 中添加依赖,修改 app.json
, 在 dependencies
添加 base-rabbitmq
{
"name": "rabbitmq-test",
"displayName": "RabbitMQ测试",
"dependencies": ["base-rabbitmq"],
"events":{
"startUp": [
"RabbitMqTest::registerConsumer"
]
}
}
编写测试代码
@Model(displayName = "RabbitMQ 测试")
public class RabbitMqTest extends BaseModel<RabbitMqTest> {
private static final Logger LOGGER = LoggerFactory.getLogger(RabbitMqTest.class);
private static final String EXCHANGE_NAME = "rabbitmq-test.topic";
private static final String QUEUE_NAME = "rabbitmq-test.changeName.queue";
private static final String ROUTING_KEY = "rabbitmq-test.changeName";
public static final String RABBIT_MQ_MODEL = "RabbitMQ";
@Property(displayName = "名称")
private String name;
public void registerConsumer() {
getMeta().get(RABBIT_MQ_MODEL).call("declareExchange", EXCHANGE_NAME, "topic");
getMeta().get(RABBIT_MQ_MODEL).call("declareQueue", QUEUE_NAME);
getMeta().get(RABBIT_MQ_MODEL).call("queueBind", EXCHANGE_NAME, ROUTING_KEY, QUEUE_NAME);
getMeta().get(RABBIT_MQ_MODEL).call("registerConsumer", QUEUE_NAME, "RabbitMqTest", "handleChangeNameEvent");
}
@MethodService(description = "发送事件")
public void publishChangeNameEvent() {
ChangeNameEvent event = new ChangeNameEvent("1", "Mary");
getMeta().get(RABBIT_MQ_MODEL).call("send", EXCHANGE_NAME, ROUTING_KEY, JSON.toJSONString(event));
}
@MethodService(description = "处理事件")
public void handleChangeNameEvent(String event) {
LOGGER.debug("接收到消息:{}", event);
}
}
方法说明
- registerConsumer:用于作为启动事件,启动的时候声明交换机、声明队列、绑定队列、注册消费者
- publishChangeNameEvent:用于发送事件
- handleChangeNameEvent:业务中处理事件的逻辑
添加启动事件
在 app.json
中添加启动事件,在应用启动的时候注册消费者。
{
"name": "rabbitmq-test",
"displayName": "RabbitMQ测试",
"dependencies": ["base-rabbitmq"],
"events":{
"startUp": [
"RabbitMqTest::registerConsumer"
]
}
}