C# AMQLite能否充当WindowsAzure.ServiceBus客户端的服务器?
我想对一个消息传递客户端库进行黑盒测试,该库使用nuget包()向Microsoft ServiceBus队列发送和接收消息 我的目标是为消息传递客户端库创建集成测试,但不与实际的Microsoft Service Bus服务器通信 查看库,我希望可以使用amqplite创建一个AMQP主机,并将消息传递客户端库配置为与该主机通信,而不是与实际的Microsoft服务总线通信 这是我使用amqplite定制的AMQP主机:C# AMQLite能否充当WindowsAzure.ServiceBus客户端的服务器?,c#,testing,amqp,azureservicebus,C#,Testing,Amqp,Azureservicebus,我想对一个消息传递客户端库进行黑盒测试,该库使用nuget包()向Microsoft ServiceBus队列发送和接收消息 我的目标是为消息传递客户端库创建集成测试,但不与实际的Microsoft Service Bus服务器通信 查看库,我希望可以使用amqplite创建一个AMQP主机,并将消息传递客户端库配置为与该主机通信,而不是与实际的Microsoft服务总线通信 这是我使用amqplite定制的AMQP主机: public class LinkProcessor : ILinkPr
public class LinkProcessor : ILinkProcessor
{
public void Process(AttachContext attachContext)
{
Console.WriteLine("LinkProcessor.Attach!");
}
}
var containerHost = new ContainerHost(new Uri("amqp://localhost:9876/"));
containerHost.RegisterLinkProcessor(new LinkProcessor());
containerHost.Open();
我在containerHost上注册了一个ILinkProcessor,这样我就可以在控制台上看到任何连接尝试(基于我对AMQP/AMQLite的有限理解,我认为ILinkProcessor就是这样做的)
下面的AMQP客户端可以连接,服务器进程在控制台上输出“LinkProcessor.Attach!”
async Task Main()
{
await SendMessage("q2", "hello world");
}
async Task SendMessage(string queue, string message)
{
var connection = await Connection.Factory.CreateAsync(new Address("amqp://localhost:9876/"));
var session = new Session(connection);
var msg = new Message(message);
var sender = new SenderLink(session, "sender-link", queue);
await sender.SendAsync(msg);
await sender.CloseAsync();
await session.CloseAsync();
await connection.CloseAsync();
}
返回要测试的消息传递客户端库:
- 库是使用连接字符串配置的,工作连接字符串如下所示(我假设连接字符串格式是WindowsAzure.ServiceBus定义的格式):
Endpoint=sb://xxx/yyy;发送点=https://nnn:NNNN/xxx;RuntimePort=NNNN;ManagementPort=NNNN;OAuthUsername=xxx;OAuthPassword=yyy
- 我将配置字符串更改为以下内容:
端点=amqp://localhost:9876/q2
- 运行测试客户端时,会发生以下情况:
- 客户端引发异常:您试图创建到不支持.Net框架的服务的通道李>
- 我在AMQLite主机端没有看到任何活动,即控制台上没有“LinkProcessor.Attach!”消息
- 我想实现的目标可能吗?即,是否有方法配置AMQLite主机,以便它可以接受来自WindowsAzure.ServiceBus客户端的连接