- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 LocalStack 测试 MassTransit 时遇到问题,但在 AWS 中使用真正的 SNS/SQS 一切正常,所以我怀疑这是 LocalStack 的问题,除非 MassTransit 需要配置 ServiceURL 之外的其他东西。见 https://github.com/MassTransit/MassTransit/issues/1476
我按如下方式运行 LocalStack,仅使用 SNS 和 SQS
docker run -it -e SERVICES=sns,sqs -e TEST_AWS_ACCOUNT_ID="000000000000" -e DEFAULT_REGION="us-east-1" -e LOCALSTACK_HOSTNAME="localhost" -e -rm --privileged --name localstack_main -p 4566:4566 -p 4571:4571 -p 8080-8081:8080-8081 -v "/tmp/localstack:/tmp/localstack" -v "/var/run/docker.sock:/var/run/docker.sock" -e DOCKER_HOST="unix:///var/run/docker.sock" -e HOST_TMP_FOLDER="/tmp/localstack" "localstack/localstack"
现在我使用 MassTransit 创建并启动了公交车。为了让 MassTransit 与 LocalStack 一起工作,我所做的唯一更改是在 SNS 和 SQS 中设置 ServiceURL
。其余的应该以相同的方式工作(我认为)
var region = "localhost:4566";
var accessKey = "test";
var secretKey = "test";
var busControl = Bus.Factory.CreateUsingAmazonSqs(c =>
{
var hostAddress = new Uri($"amazonsqs://{region}")
var hostConfigurator = new AmazonSqsHostConfigurator(hostAddress);
hostConfigurator.AccessKey(accessKey);
hostConfigurator.SecretKey(secretKey);
hostConfigurator.Config(new AmazonSimpleNotificationServiceConfig {ServiceURL = $"http://{region}"});
hostConfigurator.Config(new AmazonSQSConfig {ServiceURL = $"http://{region}"});
c.Host(hostConfigurator.Settings);
});
运行我的项目时,我可以连接和发布事件,没有错误。我订阅了事件,没有错误。我可以看到主题、订阅和队列已在 LocalStack 中正确创建。
我还可以通过 Commandeer 看到队列中有“不可见”的消息(不确定那是什么),所以问题似乎出在接收部分。
是否需要在 MassTransit 中配置任何其他要求以使用已发布的事件?
更新 1:一件有趣的事情是,我可以让订阅者长时间收听,在此期间,Commandeer 显示队列中有不可见的消息。一旦我停止订阅者(和我的应用程序),我就可以看到 Commandeer 将消息从“不可见”移动到“消息”。但是无法查看消息。
最佳答案
我已经确认问题出在 localstack 最新图像上,因为我已经按照 Chris 的建议尝试了一个旧图像,并且效果很好。
使用 localstack/localstack:0.11.2
效果很好
docker run -it -e SERVICES=sns,sqs -e TEST_AWS_ACCOUNT_ID="000000000000" -e DEFAULT_REGION="us-east-1" -e LOCALSTACK_HOSTNAME="localhost" -e -rm --privileged --name localstack_main -p 4566:4566 -p 4571:4571 -p 8080-8081:8080-8081 -v "/tmp/localstack:/tmp/localstack" -v "/var/run/docker.sock:/var/run/docker.sock" -e DOCKER_HOST="unix:///var/run/docker.sock" -e HOST_TMP_FOLDER="/tmp/localstack" "localstack/localstack:0.11.2"
使用 latest
(我认为它是 bdfbe53666a4dd13a09dd9e4b155e2fb750b8041daf7efc69783cb4208b6cacc
但不是 100% 确定)它不起作用。
以下图像版本也不起作用:
localstack/localstack:0.12.8
localstack/localstack:0.11.6
更新 1:我创建了一个简单的 repo,其中包含重现问题的说明 https://gitlab.com/sunnyatticsoftware/sandbox/issue-localstack-masstransit
请注意,该存储库对 MassTransit 进行了包装抽象,以便与干净的架构一起使用。这不会影响问题,但复制粘贴所需部分比从头开始构建示例更容易。
更新 2:验证最新版本 localstack/localstack:0.12.9.1
适用于上述情况(参见 repo)
更新 3 (2021-01-12):我再次尝试了 localstack/localstack:0.12.9.1
版本,但它不起作用。不确定上一次是否真的有效或 docker 镜像被覆盖。无论如何,我又回到了使用 localstack/localstack:0.11.2
版本,因为不幸的是 latest
也坏了。
我可以看到队列中的消息是隐藏的。
awslocal sqs get-queue-attributes --queue-url http://localhost:4566/000000000000/sample-queue --attribute-names All
{
"Attributes": {
"ApproximateNumberOfMessages": "0",
"ApproximateNumberOfMessagesDelayed": "0",
"ApproximateNumberOfMessagesNotVisible": "4",
"CreatedTimestamp": "1626087449.988218",
"DelaySeconds": "0",
"LastModifiedTimestamp": "1626087450.113652",
"MaximumMessageSize": "262144",
"MessageRetentionPeriod": "345600",
"QueueArn": "arn:aws:sqs:us-east-1:000000000000:sample-queue",
"Policy": "{\"Version\": \"2012-10-17\", \"Statement\": [{\"Sid\": \"0d948ac2a9ea4ed7b2c0609642107f0f\", \"Effect\": \"Allow\", \"Principal\": {\"AWS\": \"*\"}, \"Action\": \"sqs:SendMessage\", \"Resource\": \"arn:aws:sqs:us-east-1:000000000000:sample-queue\", \"Condition\": {\"ArnLike\": {\"aws:SourceArn\": \"arn:aws:sns:us-east-1:000000000000:*\"}}}]}",
"ReceiveMessageWaitTimeSeconds": "0",
"VisibilityTimeout": "30"
}
}
关于publish-subscribe - 带有 MassTransit 的 Localstack 没有收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66767011/
我正在尝试让 localstack/localstack 的本地 docker 实例与 node.js aws-sdk 库一起使用。但是我可以获得一个简单的 createTopic 来在 sns 客户
在我的 ubuntu 18 机器上,我无法运行 localstack 的最新 docker 镜像。 即使结束消息显示为“就绪”,我仍然无法使用以下命令访问它。 awslocal --endpoint-
我正在使用 localstack 来模拟 SNS 和 SQS,但每次尝试使用仪表板时,我都会收到此错误: 2019-08-19T09:59:58:WARNING:localstack.dash
我有以下代码片段,应该在 AWS Lambda 函数中运行: AWSSecretsManager client = AWSSecretsManagerClientBuilder.standard().
我正在使用 serverless 来部署 AWS 无服务器堆栈。 (即:lambda、sqs、sns)。我想在尝试部署到 AWS 之前先在本地运行。我已经搜索并看到 localstack 适合我的用例
作为测试开发人员,我正在尝试使用 localstack 来模拟 SQS 以进行集成测试。 Docker 撰写: localstack: image: localstack/localsta
我正在使用 docker 运行 Localstack 和图像 0.11.1 。 我打开了 es 服务并暴露了端口 4566 - 根据文档( https://github.com/localstack/
我想对尝试向 AWS SNS 发布消息的应用程序运行功能测试。我尝试了 LocalStack,发现它可以完成我在本地模拟和发布消息所需的一切。但是我的应用程序使用 amazon sdk client
我正在尝试使用Localstack在我的集成测试中模拟 AWS。作者指导我们将 Localstack 与 Java 测试集成,如下所示: import cloud.localstack.Localst
我目前想使用 LocalStack 模拟 AWS 环境。但是在创建堆栈时,该服务返回了一个错误代码:500。 这是我的模板文件: AWSTemplateFormatVersion: '2010-09-
我正在尝试使用 LocalStack 进行端到端测试,但无法阅读通过 LocalStack/SES 发送的电子邮件。有没有办法做到这一点? 我希望我的 Cypress e2e 测试调用我的后端服务,后
我正在尝试为 Spring 引导服务提出一些集成测试。由于该服务使用 AWS SQS 和 DynamoDB,我倾向于利用 testcontainers 的 Localstack 模块进行集成测试。但是
我正在尝试在我的 docker 容器中使用 localstack。我为 s3 创建了 demo-bucket。我可以查看我从终端上传的文件,但我无法从代码访问 s3。我在哪里犯了错误?我在下面分享我的
我正在尝试在我的 docker 容器中使用 localstack。我为 s3 创建了 demo-bucket。我可以查看我从终端上传的文件,但我无法从代码访问 s3。我在哪里犯了错误?我在下面分享我的
我正在使用无服务器框架和 localstack,但部署失败并显示错误消息 View the full error output: https://us-east-1.console.aws.amazo
我在使用 LocalStack 测试 MassTransit 时遇到问题,但在 AWS 中使用真正的 SNS/SQS 一切正常,所以我怀疑这是 LocalStack 的问题,除非 MassTransi
在我的 docker-compose 中使用 localstack 主要是为了模仿 S3。 我知道我可以创建存储桶,这不是问题。我想做的是在运行 docker-compose up 时自动创建存储桶。
如何实例化同时具有自定义区域和 ServiceURL 的 .NET AWSSDK SQS 客户端? 更多信息: 我在 localstack 中设置了一个队列,我可以使用 CLI 通过 sqs list
如何实例化同时具有自定义区域和 ServiceURL 的 .NET AWSSDK SQS 客户端? 更多信息: 我在 localstack 中设置了一个队列,我可以使用 CLI 通过 sqs list
我已经设置了在 docker 上运行的 localstack。我有一个 .Net Core 2.1 c# Lambda 函数,它尝试连接到本地主机上的 MySql 数据库。这是我在控制台中得到的结果:
我是一名优秀的程序员,十分优秀!