我通常推荐的另一种方法是在消息代理之间通过AMQP进行集成。那就是您可以使用推送范例而不是轮询范例(相比之下,它非常强大且可扩展)!
您将在本地设置自己的代理,例如 RabbitMQ。然后你会让你的集成合作伙伴设置一个。(简单:只需下载它)。
如果您的合作伙伴正在从同一个数据中心进行集成,那么您可以假设很少有网络分裂——这意味着您可以共享代理。另一方面,如果您在不同的网络上,您可以将代理设置为联合模式。(运行rabbitmq-plugins enable rabbitmq_federation
并指向另一个代理)
现在您可以使用例如 MassTransit:
ServiceBusFactory.New(sbc =>
{
sbc.UseRabbitMqRouting();
sbc.ReceiveFrom("rabbitmq://rabbitmq.mydomain.local/myvhost/myapplication");
// sbc.Subscribe( s => s ... );
});
,就像您在不进行任何集成时所做的那样。
如果您现在查看http://rabbitmq.mydomain.local:55672/,您将找到 RabbitMQ 的管理界面。MassTransit 为每种消息类型创建一个交换(将这样的消息发送到该交换将散播给所有订阅者),您可以在其上设置授权规则。
授权规则可以是每个用户的正则表达式形式,也可以集成到 LDAP 中。请查阅相关文档。
如果您通过 WAN 并且没有 IPSec 隧道,您还需要 SSL - 该文档在这里:http ://www.rabbitmq.com/ssl.html并且您启用它就像这个。
而已!享受!
发布脚本:如果您希望冒险可以帮助您管理所有基础设施作为副作用,您可以查看puppet。Puppet 是服务器的配置者和配置管理器;在这种情况下,您会对使用 puppet 设置 SSL 感兴趣。首先,为您的域订购一个通配符子域证书,然后使用该证书签署其他证书:您可以委托它 - 请参阅 rabbitmq 指南,其中指出“现在我们可以生成我们的测试证书颁发机构将使用的密钥和证书。” - 为证书生成证书签名请求,而不是创建新的授权 - 并让 RMQ 将其用于 SSL - 它将对 Internet 有效。