tôi gửi một thông điệp tới một hàng đợi tin qua C#:MSMQ qua C# - ACK nhận được tin nhắn đó?
MessageQueue msgQ = new MessageQueue(@".\private$\aaa");
msgQ.Formatter = new XmlMessageFormatter(new[] { typeof (String) });
msgQ.Send(msg);
Nó không làm việc và tôi thấy thông báo trong hàng đợi.
Tuy nhiên, có cách nào để nhận ACK cho dù thông báo có được vào hàng đợi với thành công không?
nb
BeginPeek
và PeekCompleted
là một sự kiện mà được nâng lên khi một tin nhắn trở nên có sẵn trong hàng đợi hoặc khi khoảng thời gian xác định thời gian đã hết hạn. nó là không phải giúp tôi vì tôi cần biết liệu thông báo mà tôi đã gửi đã được nhận bởi msmq chưa. BeginPeek
cũng sẽ được nâng lên nếu có ai đó khác đã nhập thư vào hàng đợi. và điều cuối cùng tôi muốn là kiểm tra qua BeginPeek
- thông điệp này đến từ ai.
Tôi có thể làm như thế nào?
NB2
Hoặc có lẽ tôi không cần phải lo lắng vì msgQ.Send(msg);
sẽ nâng cao ngoại lệ nếu thông điệp không được chèn ....?
Máy tính iis và msmq của tôi là cùng một máy. Nếu vậy, Có một thông báo được lưu trữ trong hàng đợi gửi đi trước khi nó đi vào hàng đợi đến không? Ngoài ra, không có nhiều hơn 1 hoạt động để hoàn thành trong giao dịch ... Vậy tại sao bạn không nghĩ rằng hàng đợi giao dịch không được khuyến khích? –
Vâng, như được chỉ trong liên kết trong câu trả lời của tôi, nếu dịch vụ xử lý hàng đợi gặp sự cố trong khi xử lý hàng đợi không giao dịch, thông báo hiện tại bị mất. Sử dụng không giao dịch nếu điều này là OK. Đối với câu hỏi khác, nếu tất cả các giao tiếp là địa phương, hàng đợi gửi đi không nên được sử dụng. –