我定期向bucket
Amazon S3
上的ActiveMQ
发送一些文件。但是,我需要通知我的服务器我的存储桶已更新,因此他们可以下载新文件。
我想实施推送和拉方法,或类似的方法。
我考虑建立topics
环境,与shell
合作。然而,我不知道它是否真的有必要,也许我对这个问题反应过度,你们可能会有一个更简单的解决方案。
[编辑]
我一直在努力用#!/bin/bash
set -x
CLIENTID=$(hostname -f)
MOM_ADDRESS="mom.company.solutions"
DESTINATION="Company.Product.Sync"
TYPE="topic"
USER="admin"
PASSWORD="admin"
# USER="user"
# PASSWORD="user"
produce(){
curl -u "${USER}":"${PASSWORD}" -d "body=${MESSAGE}" "http://${MOM_ADDRESS}:8161/api/message/${DESTINATION}?type=${TYPE}"
}
consume(){
while [ true ];
do
wget --user "${USER}" --password "${PASSWORD}" "http://${MOM_ADDRESS}:8161/api/message/${DESTINATION}?type=${TYPE}&clientId=${CLIENTID}"
sleep 5
done
}
case "${1}" in
produce)
MESSAGE="${2}"
produce
;;
consume)
consume
;;
*)
echo "Usage: jasper {produce|consume}"
exit 1
;;
esac
做一些非常简单的事情,到目前为止我得到了这个:
./queue produce './sync download'
./queue consume
用法:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
int test;
} meta_t;
int main() {
char *start_mem = malloc(10);
meta_t meta;
meta.test = 123;
memcpy(start_mem, &meta, sizeof(meta));
printf("Saved: %d\n", ((meta_t *)(start_mem))->test);
return 0;
}
答案 0 :(得分:1)
只需启用S3事件通知:http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
您可以将它们转到SNS主题,SQS队列或Lambda函数。