加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中的持久阻塞队列?

发布时间:2020-12-15 04:08:08 所属栏目:Java 来源:网络整理
导读:TL; DR;我需要知道是否存在具有持久阻塞队列的lib,这是一种性能. 我有一个经典的生产者/消费者计划.他们共享一个LinkedBlockingQueue来共享数据,我在消费者中使用BlockingQueue#take方法,因为我需要他们永远等待新元素. 问题是我有很多数据,我不能丢失它们.
TL; DR;我需要知道是否存在具有持久阻塞队列的lib,这是一种性能.

我有一个经典的生产者/消费者计划.他们共享一个LinkedBlockingQueue来共享数据,我在消费者中使用BlockingQueue#take方法,因为我需要他们永远等待新元素.

问题是我有很多数据,我不能丢失它们.即使在消费者停止之后,生产者也可以坚持生成一些数据.我正在考虑实现我的BlockingQueue ta后面使用H2来存储/获取一些阈值后的数据.我的主要问题是我需要性能,我需要按照创建的顺序使用元素.

是否有持久阻塞队列的实现,我可以用于这样的事情?如果没有,那么我可以通过什么方式来实现这样的目标呢?

解决方法

我会使用ActiveMQ lib和 Spring JMS,这是一个用法示例

启动经纪人

BrokerService broker = new BrokerService();
broker.addConnector("tcp://localhost:61616");
broker.start();

阅读消息

ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
JmsTemplate t = new JmsTemplate(cf);
Message msg = t.receive();

发信息

ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616");
JmsTemplate t = new JmsTemplate(cf);
t.send("test",new MessageCreator() {
  public Message createMessage(Session session) throws JMSException {
    return session.createTextMessage("test");
  }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读