【问题标题】:How to post messages to RabbitMQ from SQL Server?如何从 SQL Server 向 RabbitMQ 发布消息?
【发布时间】:2016-06-15 09:26:18
【问题描述】:

我正在创建一个应用程序来测试不同 RabbitMQ 客户端之间的性能。
其中之一应该是 SQL Server。
我发现存在用于 SQL Server 集成服务 (SSIS) 的 RabbitMQ 组件。
但似乎尚未编写可以向交换器发送消息的目标组件。
任何想法如何执行?
是否应该与向 MSMQ 发布消息类似?

【问题讨论】:

  • 你想做什么?数据库存储数据并响应查询,它不会尝试与其他系统集成。虽然您可以 例如调用外部命令,但延迟非常严重,它涉及放松安全性,而且只是对数据库 的滥用。 SSIS 是一种不同的服务,它明确用于简化不同系统之间的集成,而不仅仅是 SQL Server。
  • 我正在尝试比较客户端的发送和接收能力,包括 sql server(每秒消息数)。
  • 数据库不是消息传递客户端。另一方面,Web 应用程序是。您要解决的实际问题是什么?如何整合不同的系统?服务?网络应用程序?
  • 请注意,SQL Server 有自己的消息传递系统 Message Broker。这不是很受欢迎,因为它比大多数人想要的消息系统更重。它还需要配置。虽然您可以将 Message Broker 与 RabbitMQ 集成,但这就像用榴弹炮射击苍蝇
  • 我刚接到一个任务,要创建不同的 RabbitMQ 客户端,这些客户端会向 RabbitMQ 发送许多消息。所以在那之后我们就可以测试它们的发送和接收性能了。我在想我可以例如从 SQL Server 存储过程中向 RabbitMQ 发送消息。

标签: sql-server rabbitmq message-queue easynetq


【解决方案1】:

最好的办法是使用安装在 SQL 机器上的命令行工具 rabbitmqadmin。然后可以使用 xp_cmdshell 将消息发送到队列中。

https://www.rabbitmq.com/management-cli.html

DECLARE @Cmd VARCHAR(2000)
SET @Cmd = 'rabbitmqadmin publish exchange=amq.default routing_key=test payload="hello, world"'
EXEC [sys].[xp_cmdshell] @Cmd

【讨论】:

    【解决方案2】:

    您可以创建一个 SQLClr 来与 RabbitMQ 通信,例如 post

    我不认为这是一个很好的解决方案,但它似乎有效。

    【讨论】:

    • 请在您的答案正文中包含必要的步骤。虽然链接后面的帖子可能会解决问题,但链接可能会失效,您的答案几乎毫无用处。
    【解决方案3】:

    简短的免责声明:我知道问题的标题,但根据您在 cmets 中写的内容(当然还有问题本身),您似乎需要的是一个能够发送和接收许多消息的 RabbitMQ 客户端。

    你不需要写任何东西,RabbitMQ 已经有了。您可以找到它here,它是一个名为 PerfTest 的 java 客户端(在链接中也有示例,但当然可以使用 --help 运行它)并且(顾名思义)它用于性能测试.您可以定义消费者、生产者、消息的数量、消息的大小等。我已经使用过它并且仍然偶尔使用它,它工作得很好。由于您(我假设)是 RabbitMQ 的新手,因此只需改变传递 amqp uri 参数的方式(here 是规范)。

    【讨论】:

    • 抱歉,因为 OP 想要直接从 SQL Server/SSIS 连接,所以投了反对票。没有提到 Java。
    • @KeesdeKooter 尽你所能。我不会引用我在答案开头写的免责声明。我很欣赏 -1 的解释
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 2016-02-02
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2015-10-19
    相关资源
    最近更新 更多