# EventBus
FlowPortal BPM的EventBus(消息总线)支持5种主流产品:RabbitMQ、Kafka、Dapr、Azure和Rebus.
集群时根据需要选择其中一种,每台服务器指向同一配置,即可完成集群。
# RabbitMQ
安装RabbitMQ环境
使用docker部署,按照下面的步骤依次运行命令:
1、docker pull rabbitmq:3.12-management
2、docker run --name some-rabbitmq -p 5672:5672 -p 15672:15672 -d rabbitmq:3.12-management
BPM配置
放出Provider,配置RabitMQ全局连接:用户名和密码(默认都为guest)、ClientName和ExchangeName可自定,集群服务器之间保持唯一,如图:
验证消息总线集群是否成功
使用命令验证:dpublish message
在A或B服务器发送消息:dpublish aaa
要求A服务器和B服务都能收到消息
# Kafka
安装kafka环境
使用docker部署,按照下面的步骤依次运行命令:
1、docker pull wurstmeister/kafka
2、docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=localhost --env KAFKA_ADVERTISED_PORT=9092 wurstmeister/kafka:latest
BPM配置
放出Provider,配置kafka全局连接、GroupId可自定,集群服务器之间保持唯一。TopicName可自定,集群服务器之间保持一致,如图:
验证消息总线集群是否成功
使用命令验证:dpublish message
在A或B服务器发送消息:dpublish aaa
要求A服务器和B服务都能收到消息
# Dapr
Dapr安装与配置:
1、下载dapr cli(dapr.exe)
把dapr.exe放到一个目录,添加环境变量指向这个目录
2、dapr初始化:(离线)
先在powershell执行dapr init(因为网络原因失败也没关系,这里是为了生成components和config.yaml文件)
3、dapr uninstall 卸载
在目录C:\用户\用户名\.dapr\下新建bin,将下载好的文件解压后放进来( daprd.exe、dashboard.exe、web )
4、dapr –v查看版本号
环境变量添加C:\用户\用户名\.dapr\
5、创建一个dapr实例:
dapr run --app-id BPMServerApp --dapr-http-port 3501 --dapr-grpc-port 50001 --app-port 6002(运行起来窗口不要关)
在一台电脑测试集群,需运行多个实例,--app-id要保持唯一,--app-port要和程序端口一致,BPM配置文件的GrpcEndpoint要改为对应实例的--dapr-grpc-port
6、修改components目录下的pubsub.yaml文件(文件修改后重新运行Dapr实例命令才会生效)
注:文件下载地址
https://github.com/dapr/cli/releases
https://github.com/dapr/dapr/releases
https://github.com/dapr/dashboard/releases/
BPM配置
放出Provider、配置GrpcEndpoint为运行实例时dapr-grpc-port端口,PubSubName和pubsub.yaml文件的metadata保持一致,如图:
验证消息总线集群是否成功
使用命令验证:dpublish message
在A或B服务器发送消息:dpublish aaa
要求A服务器和B服务都能收到消息
# Azure
创建服务总线命名空间
1、登录Azure账户,创建服务总线命名空间
2、在共享访问策略中,获得连接字符串,如图:
BPM配置
放出Provider、配置Azure消息总线全局连接为前面步骤2中获取的连接字符串,SubscriberName可自定,集群服务器之间保持唯一,TopicName可自定,集群服务器之间保持一致,如图:
验证消息总线集群是否成功
使用命令验证:dpublish message
在A或B服务器发送消息:dpublish aaa
要求A服务器和B服务都能收到消息
# Rebus
无需安装。
BPM配置
放出Provider、InputQueueName可自定,集群服务器之间保持唯一,Transport设置为RabbitMQ,RabbitMqConnectionString配置为RabbitMQ的连接,用户名密码为guest,服务器为localhost,如图:
验证消息总线集群是否成功
使用命令验证:dpublish message
在A或B服务器发送消息:dpublish aaa
要求A服务器和B服务都能收到消息