yaopeng117(充电)你好,是消息队列服务。
我建了一个自己的私有消息队列,在程序中发送消息到这些队列,然后一个我的一个服务程序从中取消息,但是如果消息一天后就自动删除了。而我需要让消息存在更长的时间。哪位帮我一下呢?

解决方案 »

  1.   

    消息属性中有的时间限制,对事务消息,如果需要设置时间限制,则应将消息的日志属性设为MQMSG_DEADLETTER.
    MSMQMessage.MaxTimeToReachQueue 
    Specifies how long the message has to reach the queue. 
    MaxTimeToReceive
    Specifies how long the receiving application has to remove the message from the queue. (in seconds)
      

  2.   

    谢谢firefight()。
    如果是非事务消息如何修改时间限制呢?
      

  3.   

    非可靠(事务)消息中也可以设置MaxTimeToReachQueue和MaxTimeToReceive,但是当消息过期后就被丢弃了,关键是取决于应用中对消息的处理方式
      

  4.   

    非常感谢firefight()啊。
    果然,重启就丢失了。我当时主要是觉得我的消息不具事务性的要求,就使用的非事务性消息队列。没想到会在服务重启后丢失。
    只有建立事务性队列才能使消息一直存在直到被删除吗?
      

  5.   

    是啊,如果你的消息很重要就应该建立事务队列,并使用MQMSG_DELIVERY_RECOVERABLE方式发送.
    非事务消息缺省使用MQMSG_DELIVERY_EXPRESS方式发送.MQMSG_DELIVERY_EXPRESS只将消息保存在内存中,所以关机后丢失.