小编Jac*_*cia的帖子

AWS Instance Profile不适用于Spring Cloud AWS

我有一个小的Spring Boot应用程序,使用Spring Cloud AWS(1.0.0.RELEASE)来访问SQS队列.它部署在具有实例配置文件集的EC2实例上.似乎AWS的一面正在发挥作用,因为我可以访问两个相关的元数据链接:iam/info并且iam/security-credentials/role-name,它们确实包含正确的信息.只是为了确定,我已经使用了aws cmdline实用程序(aws sqs list-queues)并且确实有效,所以我猜设置正常.但是,当应用程序启动时,它会读取application.properties(包含行cloud.aws.credentials.instanceProfile=true),然后在警告后丢弃:com.amazonaws.util.EC2MetadataUtils: Unable to retrieve the requested metadata最后抛出以下异常:

Caused by: com.amazonaws.AmazonServiceException: The security token included in the request is invalid. (Service: AmazonSQS; Status Code: 403; Error Code: InvalidClientTokenId; Request ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
        at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1071)
        at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:719)
        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:454)
        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:294)
        at com.amazonaws.services.sqs.AmazonSQSClient.invoke(AmazonSQSClient.java:2291)
        at com.amazonaws.services.sqs.AmazonSQSClient.getQueueUrl(AmazonSQSClient.java:516)
        at com.amazonaws.services.sqs.buffered.AmazonSQSBufferedAsyncClient.getQueueUrl(AmazonSQSBufferedAsyncClient.java:278)
        at org.springframework.cloud.aws.messaging.support.destination.DynamicQueueUrlDestinationResolver.resolveDestination(DynamicQueueUrlDestinationResolver.java:78)
        at org.springframework.cloud.aws.messaging.support.destination.DynamicQueueUrlDestinationResolver.resolveDestination(DynamicQueueUrlDestinationResolver.java:37)
        at org.springframework.messaging.core.CachingDestinationResolverProxy.resolveDestination(CachingDestinationResolverProxy.java:88)
        at org.springframework.cloud.aws.messaging.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:295)
        at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.start(SimpleMessageListenerContainer.java:38)
        at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
        ... 17 common frames omitted
Run Code Online (Sandbox Code Playgroud)

...这意味着由于某种原因,Spring …

java amazon-web-services spring-boot spring-cloud

9
推荐指数
1
解决办法
4580
查看次数

ActiveMQ日志日志大小

我正在使用KahaDB持久性适配器运行ActiveMQ 5.3.0(是的,要升级到5.4.2,甚至很快升级到5.5.0).它有7个队列,大部分时间都是空的,也就是说,一旦消息被放入队列,它将在接下来的5-10秒内被消耗.但是,通过的消息量很大(每天几千条消息).

问题是KahaDB数据目录中填充了大量的db-X.log文件(其中X是整数).每个文件大小为32 MB(因为我运行的是相当多的默认配置),它们似乎是日志重做日志(因为默认日志文件长度为32mb).它们占用了宝贵的空间(KahaDB托管在SSD卷上)并且似乎是多余的,因为在我看来,日志日志包含旧的(即出列的)消息.

所以问题是:如何摆脱日志日志文件?我只想让KahaDB只存储待处理的消息.

正如我所提到的,配置几乎是默认的.Broker元素只设置了brokerName和dataDirectory属性,而kahaDB只设置了directory属性.

activemq-classic jms

7
推荐指数
1
解决办法
5041
查看次数

跟踪“无法打开与OID的关系”错误的原因

最近我的PostgreSQL 8.2.4记录了这样的错误:

ERROR:  could not open relation with OID nnnnnnnnn
CONTEXT: SELECT a,b,c FROM table_C
Run Code Online (Sandbox Code Playgroud)

该错误始终是由相同的情况引起的:对表A的更新导致触发触发器,该触发器将数据插入表B,从而触发另一个触发器,该触发器(除其他事项外)确实在表C上选择。在表C上选择然后报告为上述问题的上下文。每天都会执行导致错误消息出现的查询序列,并且每天都会抱怨缺少相同的OID。

查询pg_class时,错误消息中提到的OID很自然不存在。执行有问题的SQL(即在表C上选择)不会引起任何问题。我试图找出所有涉及的表之间的OID和连接,以找出对不存在的OID的引用在哪里,但是我失败了。我从表A开始,获取了其OID(pg_class.reltype)并进行了验证,确认该表具有触发器。当我使用pg_trigger.tgrelid = pg_class.reltype作为条件查询pg_trigger时,问题就开始了。查询产生0行,但是当我仅按relname / tgname查询表时,会得到不同的OID,就像触发器在不同的表上一样。我做了一个快速测试,结果发现,创建一个带有触发器的简单表会产生相同的结果。

所以我的问题是:

  1. 当我可以在pg_class中找到表时,如何浏览pg_trigger(以及其他pg表,如pg_attribute,pg_shdepend)表?

  2. 如果我设法找到对有问题的OID的引用,是否可以通过直接对pg_class表进行更新/删除来简单地删除引用?

postgresql

6
推荐指数
1
解决办法
1万
查看次数