【发布时间】:2019-11-15 14:57:52
【问题描述】:
我有一个 spring-boot 应用程序可以进行一些处理。这个应用程序发出请求,与不同的应用程序通信。请求包括
- HL7 消息发送到外部系统的 tcp/ip 套接字。
- 对其他 API 的 http 请求(不是每个 API 调用,而是选择一个)
- json 数据到文件系统
我需要一种机制来存储所有发出的信息并进行跟踪,这样如果我需要重新发送某些内容,我应该能够手动重新发送它们。并且还要确保发送出去的东西最终会发送到端点。
我查看了消息代理/消息队列 - RabbitMQ、Kafka、ActiveMQ。我没有与这些中的任何一个合作过。据我了解,这些排队框架提供了发布/订阅机制,直接交换模式。
我的问题
- 在消息传递环境中,我可以将消息发送到代理,然后让代理发送到外部端点吗?
- 消费者是连接到MQ还是订阅MQ接收消息?代理不能只向接收者推送消息吗?
- 如果receiver是一个restful API,它可以直接接收请求而不编写任何MQ特定的消费者代码吗?我不能要求外部系统编写一些消费者代码。
我最初认为我可以为此目的使用消息代理。但后来经过分析得出结论,Message broker 不适合我的情况。我的假设正确吗?
替代解决方案, 为从系统发出的每个请求/消息添加一个条目以及有效负载。构建可用于跟踪这些请求的 UI,并在 UI 中提供重新发送选项,可用于将这些消息重新发送到端点。查看每天发送的大约 200000 个请求/消息。
【问题讨论】:
标签: spring-boot apache-kafka rabbitmq activemq message-queue