Простая очередь сообщений (simple Message Queue)
Простая очередь сообщений, далее simpleMQ, разработана для реализации промежуточного программного обеспечения, поддерживающего отправку сообщений.
SimpleMQ основана на Redis и fastjson и реализует функции очереди сообщений, каналов подписки и K-V таблицы.
API доступен в онлайн-документации (javadoc): https://apidoc.gitee.com/l0km/simplemq.
1. Очередь сообщений
Очередь сообщений разработана по модели «производитель — потребитель».
Код:
2. Каналы подписки
Каналы подписки разработаны по модели «издатель — подписчик».
Код:
3. K-V таблица
K-V таблица реализована в классе RedisTable.java (src/main/java/gu/simplemq/redis/RedisTable.java).
4. Создание экземпляров
Для создания экземпляров классов используется класс RedisFactory.java (src/main/java/gu/simplemq/redis/RedisFactory.java).
5. Примеры использования
Пример использования RedisConsumer:
public class TestRedisConsumer { private static final Logger logger = LoggerFactory.getLogger(TestRedisConsumer.class);
@Test
public void testRedisConsumer() {
RedisConsumer consumer = RedisFactory.getConsumer(JedisPoolLazy.getDefaultInstance());
Channel<String> list1 = new Channel<String>("list1", String.class, new IMessageAdapter<String>() {
@Override
public void onSubscribe(String t) throws SmqUnsubscribeException {
logger.info("{}:{}", "list1", t);
}
});
Channel<String> list2 = new Channel<String>("list2", String.class, new IMessageAdapter<String>() {
@Override
public void onSubscribe(String t) throws SmqUnsubscribeException {
logger.info("{}:{}", "list2", t);
}
});
Channel<String> list3 = new Channel<String>("list3", String.class, new IMessageAdapter<String>() {
@Override
public void onSubscribe(String t) throws SmqUnsubscribeException {
logger.info("{}:{}", "list3", t);
}
});
consumer.register(list1, list2);
consumer.register(list3);
consumer.unregister(list1);
}
}
Пример использования RedisSubscriber:
public class TestRedisSubscriber { private static final Logger logger = LoggerFactory.getLogger(TestRedisSubscriber.class);
@Test
public void test() {
RedisSubscriber subscriber = RedisFactory.getSubscriber(JedisPoolLazy.getDefaultInstance());
Channel<String> chat1 = new Channel<String>("chat1", String.class, new IMessageAdapter<String>() {
@Override
public void onSubscribe(String t) throws SmqUnsubscribeException {
logger.info("{}:{}", "chat1", t);
}
});
Channel<String> chat2 = new Channel<String>("chat2", String.class, new IMessageAdapter<String>() {
@Override
public void onSubscribe(String t) throws SmqUnsubscribeException {
logger.info("{}:{}", "chat2", t);
}
});
Channel<String> chat3 = new Channel<String>("chat3", String.class, new IMessageAdapter<String>() {
@Override
public void onSubscribe(String t) throws SmqUnsubscribeException {
logger.info("{}:{}", "chat3", t);
}
});
subscriber.register(chat1, chat2);
subscriber.register(chat3);
subscriber.unsubscribe(chat1.name);
subscriber.unsubscribe();
}
}
6. Лицензия и цитирование
simpleMQ выпущена под лицензией BSD 2-Clause (LICENSE).
@article{10km, Author = {Gu,YaDong 10km0811@sohu.com}, Title = {simpleMQ: simple Message Queue}, Year = {2017}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )