servicestack 在ServiceStack中创建C#Amazon SQS客户端
使用amazonsqs作为servicestack的MQ服务器是不可能的 但是消息发布者是前端web代码,当您深入研究应用程序时,它使用的是Rabbit MQ 存在ServiceStack,但它不使用消息传递API 尝试在电子邮件联系人中使用Rabbit MQ集成测试作为示例:
servicestack 在ServiceStack中创建C#Amazon SQS客户端,
servicestack,
servicestack,使用amazonsqs作为servicestack的MQ服务器是不可能的 但是消息发布者是前端web代码,当您深入研究应用程序时,它使用的是Rabbit MQ 存在ServiceStack,但它不使用消息传递API 尝试在电子邮件联系人中使用Rabbit MQ集成测试作为示例: [Test] public void Can_Send_Email_via_MqClient() { var mqFactory = new RabbitMqMessageFactory(); usin
[Test]
public void Can_Send_Email_via_MqClient()
{
var mqFactory = new RabbitMqMessageFactory();
using (var mqClient = mqFactory.CreateMessageQueueClient())
{
mqClient.Publish(new EmailContact { ContactId = 1, Subject = "UnitTest MQ Email #1", Body = "Body 1" });
mqClient.Publish(new EmailContact { ContactId = 1, Subject = "UnitTest MQ Email #2", Body = "Body 2" });
}
}
我很快就混淆并误入歧途了,Sqs的ServiceStack API似乎与RabbitMQ非常不同。我甚至无法使用强类型POCO作为消息:
[Fact(DisplayName = "Tests that a successful message is published and received")]
public async void TestMessage()
{
var mqFactory = new SqsConnectionFactory("awskey", "awssecret", RegionEndpoint.USWest1);
using (IAmazonSQS mqClient = mqFactory.GetClient())
{
var req = new SendMessageRequest("query", "hello");
await mqClient.SendMessageAsync(req);
//mqClient.Publish(new Hello { Name = "World" });
//var rec = new ReceiveMessageRequest();
//await mqClient.Re
//var responseMsg = mqClient.Get<HelloResponse>(QueueNames<HelloResponse>.In);
//mqClient.Ack(responseMsg);
//responseMsg.GetBody().Result //= Hello, World!
}
}
[事实(DisplayName=“测试成功发布和接收消息”)]
公共异步void TestMessage()
{
var mqFactory=新的SQS连接工厂(“awskey”、“awssecret”、RegionEndpoint.USWest1);
使用(IAmazonSQS mqClient=mqFactory.GetClient())
{
var req=新的SendMessageRequest(“查询”、“你好”);
等待mqClient.SendMessageAsync(req);
//mqClient.Publish(新Hello{Name=“World”});
//var rec=new ReceiveMessageRequest();
//等待mqClient.Re
//var responseMsg=mqClient.Get(QueueNames.In);
//mqClient.Ack(responseMsg);
//responseMsg.GetBody().Result/=你好,世界!
}
}
是否有使用ServiceStack消息传递API和SQS作为MQ服务器的示例应用程序
存在ServiceStack,但它不使用消息传递API
注意:AWS应用程序确实注册了:
尽管ServiceStack服务中首选的API是使用PublishMessage()
:
注意:对/oneway
预定义端点的请求是
在没有注册的SqsMqServer
的客户端应用程序中,您将创建一个SqsMqMessageFactory
:
var mqFactory = new SqsMqMessageFactory(new SqsQueueManager(...));
using (var mqClient = mqFactory.CreateMessageQueueClient())
{
mqClient.Publish(new Hello { Name = "World" });
}
如何定义要使用的Amazon SQS队列名称,我有多个SQS队列,一个名为“queue1”,另一个名为“queue2”@BrianOgden ServiceStack MQ根据队列名称处理队列的创建和命名。每个不同的请求DTO/队列类型都需要自己的队列,但如果您希望此应用的所有队列都以
站点开头,则可以从静态配置类中进行一些自定义,如QueueNames.SetQueuePrefix(“site1”)
。(任何配置都需要在服务器和客户端上设置&仅在启动时设置一次)
var mqFactory = HostContext.TryResolve<IMessageFactory>(); //or
//var mqFactory = HostContext.TryResolve<IMessageService>().MessageFactory;
using (var mqClient = mqFactory.CreateMessageQueueClient())
{
mqClient.Publish(new Hello { Name = "World" });
}
PublishMessage(new Hello { Name = "World" });
var mqFactory = new SqsMqMessageFactory(new SqsQueueManager(...));
using (var mqClient = mqFactory.CreateMessageQueueClient())
{
mqClient.Publish(new Hello { Name = "World" });
}