public void Send(Model.UserRegister register) { // This method does not involve in distributed transaction and optimizes performance using Single type //MessageQueue queue = new MessageQueue(queuePath); //base.transactionType = MessageQueueTransactionType.Single; //queue.Send(register, base.transactionType); base.transactionType = MessageQueueTransactionType.Single; base.Send(register); }
public bool Send(UserGroup group, UserLogin login, User user, Model.UserRegister register) { //发送消息 //连接到本地的队列 MessageQueue myQueue = new MessageQueue(queuePath); MessageQueueTransaction trans = new MessageQueueTransaction(); try { if (myQueue.Transactional) { trans.Begin(); } Message myMessage1 = new Message(group); myMessage1.AdministrationQueue = myQueue; myMessage1.AcknowledgeType = AcknowledgeTypes.PositiveReceive | AcknowledgeTypes.PositiveArrival; myMessage1.Formatter = new XmlMessageFormatter(new Type[] { typeof(UserGroup) }); myMessage1.Priority = MessagePriority.Highest; myQueue.Send(myMessage1, trans); Message myMessage2 = new Message(login); myMessage2.Priority = MessagePriority.Highest; myMessage2.Formatter = new XmlMessageFormatter(new Type[] { typeof(UserLogin) }); myQueue.Send(myMessage2, trans); Message myMessage3 = new Message(user); myMessage3.Priority = MessagePriority.Highest; myMessage3.Formatter = new XmlMessageFormatter(new Type[] { typeof(User) }); myQueue.Send(myMessage3, trans); Message myMessage4 = new Message(register); myMessage4.Priority = MessagePriority.Highest; myMessage4.Formatter = new XmlMessageFormatter(new Type[] { typeof(MsmqUserRegister) }); myQueue.Send(myMessage4, trans); if (myQueue.Transactional) { trans.Commit(); } return(true); } catch (ArgumentException e) { // 如果消息队列采用了事务并且出现了异常,则终止事务 if (myQueue.Transactional) { trans.Abort(); } return(false); } }