小编M22*_*2an的帖子

当客户端花费超过60秒来确认消息时,Rabbitmq服务器会断开连接

我目前正在使用来自RabbitMQClient.dll C#客户端的EventingBasicConsumer,我们生成一个不同的线程来处理传递给消费者的每条消息.

我们遇到了一个奇怪的行为,RabbitMQ服务器有时会因错误而关闭连接missed heartbeats from client, timeout: 60s.几分钟后,客户报告错误说Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Library, code=541.我也client unexpectedly closed TCP connection经常看到这个错误发生.

在某些情况下,客户端可能需要60秒以上的时间来处理一个作业请求,并且在这种情况下会发生此错误.

是否需要在60秒内处理作业?因为对于我们的流程,这可能在30秒到5分钟之间变化.

RabbitMQ服务器:3.6.6 RabbitMQ.Client.dll(C#客户端):RabbitMQ.Client.4.1.1

非常感谢对此问题的任何见解.

c# rabbitmq

8
推荐指数
1
解决办法
2997
查看次数

REST API Http 状态代码最佳实践

我们正在编写一个 REST API,它将被公开并被许多第三方开发人员使用。我正在研究 http 状态代码的最佳实践,尤其是在错误情况下。

我们的应用程序内部有很多组件,API 就是这些组件的接口。如果内部组件有任何错误,我是否应该返回 500 并带有适当的错误消息?

在经历 SO 时,我发现了一些博客/SO 线程,它们提出了不同的方法,但没有一个有具体的答案。

非常感谢您对此的任何帮助。

rest asp.net-web-api asp.net-web-api2

5
推荐指数
1
解决办法
2612
查看次数

对对象数组进行过滤

在elasticsearch中,我们有一个包含对象数组的类型。当尝试从 Kibana 访问时,我在访问时遇到一些不一致的情况

这是我的映射的摘录,

{
    "myIndex-2017.08.22": {
        "mappings": {
            "typeA": {
                "properties": {
                    .
                    .
                    .
                    "Collection": {
                        "properties": {
                            .
                            .
                            .
                            "FileType": {
                                "type": "text"
                            }
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我可以在集合中有多个对象,即,将其索引为数组。当我尝试使用一种文件类型(例如 FileType: DOCX)进行查询时,我也会得到一些文件类型为 HTML 的记录。

当深入查看时,我发现这是因为某些记录有两个集合元素,一个是 FileType:DOCX,另一个是 FileType:HTML。

为什么过滤会这样工作?是否有其他方法可以过滤并仅获取 FileType: DOCX 而不是显示 FileType: HTML。

我正在运行 ES 5.3。

arrays elasticsearch

3
推荐指数
1
解决办法
4708
查看次数

如何获取 EC2 实例的 VPC Id?

我需要使用 C# AWS SDK 识别当前 EC2 实例的 VpcId。我已经尝试这样做了几个小时,但没有真正的运气。

我目前的做法是这样的,

var currentInstanceId = Amazon.EC2.Util.EC2Metadata.InstanceId; // Get Current Instance Id

AWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
var ec2Client = AWSClientFactory.CreateAmazonEC2Client(creds, clientRegionEndpoint);
var instances = ec2Client.DescribeInstances();

foreach (var reservation in instances.Reservations)
{
  foreach (var instance in reservation.Instances)
  {
    if (instance.InstanceId.Equals(currentInstanceId)) // Compare Instance Id with all available instances 
      return instance.VpcId;
  }
}
Run Code Online (Sandbox Code Playgroud)

我觉得应该有一种更简单的方法来做到这一点。对此的任何帮助将不胜感激。


更新:

在@jbird 的帮助下,我能够使用以下方法实现这一目标,

Amazon.EC2.Util.EC2Metadata.NetworkInterfaces.First().VpcId
Run Code Online (Sandbox Code Playgroud)

c# amazon-ec2 amazon-web-services aws-sdk

0
推荐指数
1
解决办法
1443
查看次数