Я использую vertx3Лучшая практика дизайна на vertx. Eventbus или Singleton для хранилищ
мне нужно использовать Redis для того, чтобы установить и получить значения. (Redis может быть изменено на что-то другое в будущем)
Iam ищет лучший дизайн практики для моей реализации.
Я работаю над кластером vertx, и мне нужно получить сообщения через eventbus извлечения сообщения и вставить в Redis.
В другой стороны, я могу получить запросы через веб, а также извлекать сообщения и вставлять их в Redis
Два варианта:
Если у меня есть «Redis-Verticle», что получить сообщения через шину и записать их.
Должен ли я создать «Listener verticle», который будет содержать DAO, который будет содержать объект RedisRepo, который будет их записывать.
Я также буду в состоянии справиться с вебом-вызовами и удерживайте этот DAO объект
Если бы я был на весенне-приложении, которое я бы создать DAO, который держит RedisRepo и Ввожу его в свой слой услуг, но здесь мы получили eventbus, поэтому я не уверен.
(кстати в Redis DATASOURCE меня быть изменен на что-то другое, так что я должен думать об общих обертках)
1.
public class RedisRepoVerticle extends AbstractVerticle {
...
public void start() {
client = new RedisClient("localhost", 6379);
connection = client.connect();
...
vertx.eventBus().consumer("redis-operation", (handler) -> {
{
JsonObject msg = new JsonObject(handler.body().toString());
//write straight to Redis
}
});
}
2.
public class RedisMessageListener extends AbstractVerticle {
DatasourceDAO datasource
...
public void start() {
client = new RedisClient("localhost", 6379);
connection = client.connect();
...
vertx.eventBus().consumer("redis-operation", (handler) -> {
{
JsonObject msg = new JsonObject(handler.body().toString());
datasourceDAO.writeToRedis(..);
}
});
}
//datasourceDAO will hold RedisRepo object
Если взять второй вариант я должен начать поддерживать одиночка? Я не хочу дублировать свои daos, которые будут дублировать классы redisrepo.
У вас есть идеи в этом вопросе? –