SSIS-从RabbitMQ提取信息的脚本组件

SSIS-从RabbitMQ提取信息的脚本组件,ssis,rabbitmq,Ssis,Rabbitmq,这可能是一个理论性的问题,但我希望我的担忧得到解决(或证实) 我构建了一个脚本组件来从RabbitMQ中提取数据。在RabbitMQ上,我们基本上设置了一个持久队列。这意味着即使服务器重新启动,消息也将继续添加到队列中。这种构造允许我们周期性地执行包并获取自上次执行以来的所有“新”消息 (我们知道RabbitMQ的设置不适合这种情况,但它希望有一个固定的侦听器来处理消息。但是,我们不喜欢在SQL Server启动时启动一些任务,并且几乎是全天候运行来处理这些任务,所以我们构建了一些可以计划每n分

这可能是一个理论性的问题,但我希望我的担忧得到解决(或证实)

我构建了一个脚本组件来从RabbitMQ中提取数据。在RabbitMQ上,我们基本上设置了一个持久队列。这意味着即使服务器重新启动,消息也将继续添加到队列中。这种构造允许我们周期性地执行包并获取自上次执行以来的所有“新”消息

(我们知道RabbitMQ的设置不适合这种情况,但它希望有一个固定的侦听器来处理消息。但是,我们不喜欢在SQL Server启动时启动一些任务,并且几乎是全天候运行来处理这些任务,所以我们构建了一些可以计划每n分钟运行一次并清空队列的东西如果我们无法运行任务,我们很可能正在处理一个失败的SQL Server,并且优先级不同)

组件建立连接,然后连接到我们从中提取消息的特定exchange+队列。消息采用JSON格式,因此我们将消息反序列化到脚本组件中定义的类中

对于找到的每一条消息,我们都禁用自动确认,这样我们就可以处理它,并且只在处理完成后才确认它(这确保消息将被处理,并且不会漏掉)。然后我们反序列化消息并将其推送到脚本组件的输出缓冲区

有些地方可能会出错,因此我们在代码中构建了一堆Try/Catch块。但是,看到我们正在处理队列方面的问题,并且我们需要可用的信息,我想知道是否有人可以解释发送到输出缓冲区的消息是如何/何时处理的

它是成批发送然后推送的吗?它是直接发送的吗?SSIS组件是否可能没有及时将信息更新回SSIS

我们是否有机会确认一条消息,但不知何故,它最终没有被提交到我们的数据库,而是从队列中弹出(我认为在确认一条消息后会发生这种情况)