☰
Current Page
Main Menu
Home
Home
Editing
admin#^($!@$)(()))******
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