根据Andy Skirrow(在评论中)的建议,我已经在将消息发布到RabbitMQ的JSON有效载荷中设置了每条消息的“过期时间”。
我的代码-
using (System.Net.WebClient client = new System.Net.WebClient())
{
client.Credentials = new System.Net.NetworkCredential(rmq_user, rmq_pass);
client.Headers.Set("Content-Type", "application/json");
response = client.UploadString(messagePath, jsonPayload);
}
这是我的有效载荷:
{"payload":"{\"PerformAutomation\":{\"AutomationInputDictionary\":{\"Search.Ban\":\"Holidays from=10th Mar 2017;Holidays to=13th Mar 2017;WalmartID=00155628;ticket_number=1226004;TicketType=HOLIDAY REQUEST;RawTicketData=PERN: 00155628\\r\\nHoliday Request -------------------- Holiday from 10th Mar 2017 to 13th Mar 2017\"},\"ProcessName\":\"HRProc\",\"ProfileName\":\"HR\",\"APIVersion\":\"\",\"AppId\":\"\",\"CommandExecutionWindow\":\"\",\"CommandGenerationSource\":\"\",\"Country\":\"\",\"Instance\":\"\",\"PartnerId\":\"\",\"ReferenceCode\":\"\",\"Timestamp\":\"5:07 AM\",\"UserName\":\"svcblpr\",\"VID\":\"\"}}","content_type":"string","content_encoding":"test/json","profile":"HR","expiration":604800000,"app_id":"wm_uc1_load_gen_app","source_message_id":"wm_uc1_load_gen_source","header":null}
所以,通过这种解决办法,我不必清除队列,因为根据载荷中设置的过期时间(毫秒值),消息将自动被删除。
rabbitmqadmin
中有一个功能可以清空队列,rabbitmqadmin purge queue name=queue_name
。虽然这不是您代码库中的高级操作,但这意味着您无需删除队列或停止消费者。 - Pär Eriksson