我正在创建一个由 Log4J 附加程序组成的库,该附加程序将事件异步发送到远程服务器。当一个日志语句被创建时,appender 将异步记录事件到一个本地队列中,然后一个消费者池将检索并发送到远程。
完全在内存中的解决方案是创建一个 BlockingQueue 来处理并发问题。但是,我希望保留队列,以便如果远程服务器不可用,我不会无限制地增长队列或在有界队列的情况下开始丢弃消息。
我正在考虑使用嵌入式 H2 数据库在本地存储事件,然后使用轮询机制来检索事件并发送到远程。我宁愿使用 BlockingQueue 而不是轮询数据库表。
JMS 是答案吗?
编辑:
如果 JMS 是答案,而且似乎是这样,那么是否有人对可以配置为仅接受进程内消息的轻量级、可嵌入 JMS 解决方案提出建议?换句话说,我不想也可能不会被允许打开一个 TCP 套接字来监听。
编辑:
我现在嵌入了 ActiveMQ,它似乎正在工作。谢谢大家。