有没有办法使用 localstack 和 docker-compose.yml 自动创建 SQS 队列?
我的 docker-compose.yml:
version: '3.8'
services:
localstack:
image: localstack/localstack
ports:
- "4566:4566"
- "4571:4571"
- "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
environment:
- SERVICES=${SERVICES- }
- DEBUG=${DEBUG- }
- DATA_DIR=${DATA_DIR- }
- PORT_WEB_UI=${PORT_WEB_UI- }
- LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR- }
- KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
Run Code Online (Sandbox Code Playgroud)
我希望在启动 docker-compose 时创建一些队列,而不是手动创建它。
我正在使用 spring boot 实现 SQS 订阅者,经过在互联网上的一些研究,我找到了该项目spring-cloud。
使用注释@SqsListener看起来很容易从主题接收消息,但我想将其实现为长池,而不是短池,后者在每条消息到达时都会接收消息。
@SqsListener(
value = ["queue"],
deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS
)
fun subscribeToSSmsg: String) {
....
}
Run Code Online (Sandbox Code Playgroud)
这工作顺利,但我想使用长池接收消息。有什么办法可以使用 spring-cloud 来做到这一点吗?
我有两个不可变的地图,例如:
val a = mapOf("a" to 1, "z" to 1)
val b = mapOf("b" to 1, "a" to 1, "c" to 1)
Run Code Online (Sandbox Code Playgroud)
有没有什么优雅的方法来连接这些地图并拥有一个包含所有键的地图?如果它有重复的键,我想用 B 映射中的值替换它。
结果应该类似于:
mapOf("z" to 1, "b" to 1, "a" to 1, "c" to 1)
Run Code Online (Sandbox Code Playgroud) 我想对我的回显服务器执行调用,但我无法弄清楚我的服务的主机名是什么:
orion:webanalytics papaburger$ kubectl get services -n web-analytics
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-server ClusterIP 10.100.92.251 <none> 80/TCP 87m
web-api ClusterIP 10.100.92.250 <none> 8080/TCP 87m
Run Code Online (Sandbox Code Playgroud)
我尝试使用kubectl exec -it curl-curl0 -- curl http://web-analytics.echo-server.svc.cluster.local/heythere但失败了:
curl: (6) Couldn't resolve host 'web-analytics.echo-server.svc.cluster.local'
Run Code Online (Sandbox Code Playgroud)
如果我更改web-analytics.echo-server.svc.cluster.local为集群ip,它就可以工作。
如何让我的 pod (web-api) 到达 echo 服务器?
编辑:
orion:webanalytics papaburger$ kubectl get ep -n web-analytics
NAME ENDPOINTS AGE
echo-server 172.16.187.247:80 95m
web-api 172.16.184.217:8080 95m
Run Code Online (Sandbox Code Playgroud) 是否有办法从运行 awk 和 xargs 组合等动态命令的特定命名空间中的 pod 获取所有日志?
kubectl get pods | grep Running | awk '{print $1}' | xargs kubectl logs | grep value
Run Code Online (Sandbox Code Playgroud)
我已尝试上面的命令,但它失败了,就像kubectl logs缺少 pod 名称一样:
错误:预期为“日志 [-f] [-p] (POD | 类型/名称) [-c CONTAINER]”。POD 或 TYPE/NAME 是日志命令的必需参数请参阅“kubectl logs -h”以获取帮助和示例
您对如何从 Running pod 获取所有日志有什么建议吗?
如果 find 函数返回 null,创建默认对象的“kotlin-way”是什么?
val address = this.addresses.find { a -> a.principal }
Run Code Online (Sandbox Code Playgroud)
我应该转换address为变量并使用 if/else 等条件吗?
kotlin ×2
kubernetes ×2
amazon-sqs ×1
java ×1
kubectl ×1
localstack ×1
shell ×1
spring ×1
spring-cloud ×1