草庐IT

栈和队列

全部标签

java - 将 HttpServletRequest 对象存储在队列中供以后处理是否危险?

所以,我处于一种情况,我想排队一堆HttpServletRequest对象进行异步处理。暂且不论这是否是一个明智的策略——在这种情况下它实际上是,因为我正在尝试改造一个糟糕的遗留系统——这是一件危险的事情吗?我在这里关心的是HttpServletRequest对象是否持有任何有值(value)的资源或打开的连接,这会导致死锁或资源争用问题。这里假设我正在使用doPost()方法实现一个简单的servlet,该方法获取HttpServletRequest对象,将其放入LinkedBlockingQueue,然后向用户发送某种库存响应(例如301重定向到确认页面).谢谢!

java - ActiveMQ 从队列中获取所有消息

我想创建一些工具来管理队列中的消息。所以我希望能够从队列中获取所有消息(类似于导出)并且不要从那里删除它。我尝试使用JMXAPI:ObjectNamembeanNameQueue=newObjectName("org.apache.activemq:type=Broker,brokerName=static-broker1,destinationType=Queue,destinationName=tmp_queue2");org.apache.activemq.broker.jmx.QueueViewMBeanqueueView=JMX.newMBeanProxy(mbsc,mbea

java - 使用后台线程与使用消息队列

我目前正在研究一系列警报,这些警报将检查来自外部网络服务的响应状态,并根据响应对象的状态(例如超时、无效数据等)发送警报。我希望主线程在评估响应和发送警报时继续工作。我有两个立即可用的选项:使用ActiveMQ并将对象作为objectMessage发送到队列进行处理。使用命令模式并线程化处理警报的异步命令。它们对我来说都是不错的选择,但我更倾向于线程命令,因为我不需要消息队列的大部分功能。问题:您将如何决定使用哪个?为什么? 最佳答案 两个字:保证交付。如果这对您很重要,那么消息队列就是您想要的。

java - Hazelcast 队列信息

我目前正在使用hazelcast编写分布式系统。我有几个关于使用hazelcast实现的队列的问题。处理队列中数据的最佳方法是什么?我目前在每个“节点”上都有线程读取阻塞队列处理数据。这是正确的还是有一些我不知道的类负责处理这个问题,比如JMS或messageListener?我看到有一个生存时间设置,一旦过期就会从队列中删除条目。我的问题是......有没有办法检测从队列中删除过期项目?我知道有Listener但这无济于事,因为它在所有“节点”上触发,而不仅仅是一个。我正在寻找一种为每条过期消息执行代码的方法(类似于死信队列)。如有任何意见或建议,我们将不胜感激。谢谢

Java 优先级队列比较器

我已经为优先级队列定义了自己的比较函数,但是比较函数需要数组的信息。问题是当数组的值改变时,它并没有影响比较函数。我该如何处理?代码示例:importjava.util.Arrays;importjava.util.Comparator;importjava.util.PriorityQueue;importjava.util.Scanner;publicclassMain{publicstaticfinalintINF=100;publicstaticint[]F=newint[201];publicstaticvoidmain(String[]args){PriorityQueue

java - 如何找到 horneq 队列长度

我正在使用Hornetq2.0,我不明白我怎么知道此刻队列中有多少消息。这是一个非常有用的功能,因此我可以在运行时知道我的消费者是否足够快地消费消息。我没有使用JMSapi,而是使用高度优化的核心API。获取队列中消息数量的正确(最快)方法是什么?我找到了2种方法,但不知道什么是正确的方法。publicintsize(){ClientSessionsession;try{session=sf.createSession(false,false,false);ClientRequestorrequestor=newClientRequestor(session,"hornetq.mana

java - 在应用程序引擎任务队列(JAVA)中传递多个参数

有没有办法在google-app-engine的队列中传递多个参数?我使用下面的代码Queuequeue=QueueFactory.getQueue("sms-queue");queue.add(TaskOptions.Builder.url("/SQ").param("id",pId));在我的servlet中,这个id作为查询字符串被检索。longpID=Long.parseLong(req.getParameter("id"));我需要传递6个参数。 最佳答案 你试过这样做吗:queue.add(TaskOptions.Bui

java - 队列满错误,与多个消费者、生产者一起工作

我想模拟以下场景:多个消费者,生产者线程正在修改一些数据作为设置BlockingQueueq1=newSynchronousQueue();BlockingQueueq2=newSynchronousQueue();ProducerdataProducer=newProducer(q1);//publishtoq1Filter1filter1=newFilter1(q1,q2);//readfromq1,publishtoq2Filter2filter2=newFilter2(q2);//readfromq2newThread(dataProducer,"Producer-Thread

Java 事件队列。我什么时候应该考虑使用它?

我目前正在查看Oracle网站上的EventQueue类:http://download.oracle.com/javase/1.4.2/docs/api/java/awt/EventQueue.html但是我不确定什么时候应该使用它?如果我的类(class)有两个或更多事件的监听器,我应该使用它吗? 最佳答案 通常您不必向EventQueue提交任何事件,当用户执行他的操作(如鼠标点击等)或系统认为您的窗口需要重新绘制时,这一切都会“自动”发生。我经常使用的仅有的两种方法是EventQueue.invokeLater和EventQ

java - ThreadPoolExecutor 和队列

我认为使用ThreadPoolExecutor我们可以在构造函数中传递的BlockingQueue中或使用execute方法提交要执行的Runnable。另外我的理解是,如果任务可用,它将被执行。我不明白的是:publicclassMyThreadPoolExecutor{privatestaticThreadPoolExecutorexecutor;publicMyThreadPoolExecutor(intmin,intmax,intidleTime,BlockingQueuequeue){executor=newThreadPoolExecutor(min,max,10,Time