小编Viv*_*hra的帖子

使用LEFT JOIN时,Mysql查询长时间处于'SENDING DATA'状态

我有很长一段时间处于SENDING DATA状态的查询.有人可以帮我这个:下面是详细信息

Mysql查询:

select a.msgId,a.senderId,a.destination,a.inTime,a.status as InStatus,b.status as SubStatus,c.deliverTime,substr(c.receipt,82,7) as DlvStatus 
from inserted_history a  left join submitted_history b  on b.msgId = a.msgId left join delivered_history c  on a.msgId = c.msgId 
where a.inTime between '2010-08-10 00:00:00' and '2010-08-010 23:59:59' and a.systemId='ND_arber'
Run Code Online (Sandbox Code Playgroud)

总记录在delivered_history:223870168

总记录在inserted_history:264817239

总记录在submitted_history:226637058

解释查询返回:

id  ,  select_type  ,  table  ,  type  ,  possible_keys  ,  key  ,  key_len  ,  ref  ,  rows  ,  Extra  
  1  ,  SIMPLE  ,  a …
Run Code Online (Sandbox Code Playgroud)

mysql join

8
推荐指数
2
解决办法
2万
查看次数

消耗使用核心api后,HornetQ消息仍然在队列中

我是HornetQ的新手所以请耐心等待.我先告诉你我的要求:

我需要一个消息排队中间件,它可以在不同进程之间传递大小约1k的消息,具有低延迟和持久性(即它应该能够在系统崩溃中存活).我将有多个进程写入相同的队列,同样多个进程从同一队列中读取.

为此,我选择了HornetQ,因为它具有持久性消息传递的最佳评级.

我目前使用Hornetq v2.2.2Final作为独立服务器.
我能够使用核心api (ClientSession)成功创建持久/非持久队列,并成功将消息发布到队列(ClientProducer).
同样,我可以使用核心API (ClientConsumer)从队列中读取消息.

在此之后问题出现时,客户端已读取消息,消息仍保留在队列中,即队列中的消息数保持不变.也许我弄错了但是我的印象是,一旦消息被消耗 (读取+确认),它就会从队列中删除.但这种情况在我的情况下并没有发生,并且正在反复阅读相同的消息再次.

此外,我想告诉我,我已经尝试使用非持久性队列和非持久性消息.但问题仍然存在.

我正在使用的生产者代码:

public class HQProducer implements Runnable {

    private ClientProducer producer;
    private boolean killme;
    private ClientSession session;
    private boolean durableMsg;

    public HQProducer(String host, int port, String address, String queueName,
            boolean deleteQ, boolean durable, boolean durableMsg, int pRate) {
        this.durableMsg = durableMsg;
        try {
            HashMap map = new HashMap();
            map.put("host", host);
            map.put("port", port);

            TransportConfiguration config = new …
Run Code Online (Sandbox Code Playgroud)

java queuing producer-consumer persistent-storage hornetq

7
推荐指数
1
解决办法
8121
查看次数