# 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可自定,集群服务器之间保持唯一,如图:

Image

Image

Image

验证消息总线集群是否成功

使用命令验证: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可自定,集群服务器之间保持一致,如图:

Image

Image

Image

验证消息总线集群是否成功

使用命令验证: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保持一致,如图:

Image

Image

Image

验证消息总线集群是否成功

使用命令验证:dpublish message

在A或B服务器发送消息:dpublish aaa

要求A服务器和B服务都能收到消息

# Azure

创建服务总线命名空间

1、登录Azure账户,创建服务总线命名空间

2、在共享访问策略中,获得连接字符串,如图:

Image

BPM配置

放出Provider、配置Azure消息总线全局连接为前面步骤2中获取的连接字符串,SubscriberName可自定,集群服务器之间保持唯一,TopicName可自定,集群服务器之间保持一致,如图:

Image

Image

Image

验证消息总线集群是否成功

使用命令验证:dpublish message

在A或B服务器发送消息:dpublish aaa

要求A服务器和B服务都能收到消息

# Rebus

无需安装。

BPM配置

放出Provider、InputQueueName可自定,集群服务器之间保持唯一,Transport设置为RabbitMQ,RabbitMqConnectionString配置为RabbitMQ的连接,用户名密码为guest,服务器为localhost,如图:

Image

Image

验证消息总线集群是否成功

使用命令验证:dpublish message

在A或B服务器发送消息:dpublish aaa

要求A服务器和B服务都能收到消息