☰
Current Page
Main Menu
Home
Home
Editing
RabbitMQ APP
Edit
Preview
h1
h2
h3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
Rendering unavailable for
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
代码 App [sie-snest-rabbitmq-v2.7.0.RELEASE.jar](http://docs-iidp.sieiot.com/index.php/s/iBUmRif4fNUZjjc?path=%2F%E9%98%9F%E5%88%97%E6%9C%8D%E5%8A%A1) # 基础使用 ## 添加配置 不推荐使用:在 `application.properties` 配置文件添加以下配置。<br> 因为如果需要修改配置,需要重启环境。 ```properties rabbitmq.host=127.0.0.1 rabbitmq.port=5672 rabbitmq.username=admin rabbitmq.password=password ``` 推荐使用:建议作为APP的配置信息在配置中心进行配置。<br> 例:在应用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 应用与业务应用在同一个容器内。<br> 注意:如果业务应用容器没有base-rabbitmq,调用时会出现系统异常。 ## 添加应用依赖 在需要使用 RabbitMQ 的 app 中添加依赖,修改 `app.json` , 在 `dependencies` 添加 `base-rabbitmq` ```json { "name": "rabbitmq-test", "displayName": "RabbitMQ测试", "dependencies": ["base-rabbitmq"], "events":{ "startUp": [ "RabbitMqTest::registerConsumer" ] } } ``` ## 添加启动事件 在 `app.json` 中添加启动事件,在应用启动的时候注册消费者。<br> 下图中的“"RabbitMqTest::registerConsumer"” ```json { "name": "rabbitmq-test", "displayName": "RabbitMQ测试", "dependencies": ["base-rabbitmq"], "events":{ "startUp": [ "RabbitMqTest::registerConsumer" ] } } ``` ## 编写测试代码 ```java @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:业务中处理事件的逻辑
Uploading file...
Sidebar
[[_TOC_]]
Edit message:
Cancel