From 3841862d9cef01f1eaca85ea26fecb3530c97853 Mon Sep 17 00:00:00 2001 From: Richard Alam <ritzalam@gmail.com> Date: Tue, 9 Jan 2018 14:56:17 -0800 Subject: [PATCH] - remove redis msg receivers from bbb-screenshare red5 app --- .../redis/MeetingMessageHandler.java | 35 ------ .../messaging/redis/MessageDistributor.java | 25 ---- .../messaging/redis/MessageReceiver.java | 108 ------------------ .../redis/ReceivedMessageHandler.java | 72 ------------ .../redis/RedisPubSubMessageHandler.java | 46 -------- .../screenshare/ScreenShareApplication.scala | 1 - .../webapp/WEB-INF/bbb-red5-redis-pubsub.xml | 21 ---- .../app/src/main/webapp/WEB-INF/red5-web.xml | 4 - 8 files changed, 312 deletions(-) delete mode 100755 bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MeetingMessageHandler.java delete mode 100755 bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageDistributor.java delete mode 100755 bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageReceiver.java delete mode 100755 bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/ReceivedMessageHandler.java delete mode 100755 bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/RedisPubSubMessageHandler.java diff --git a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MeetingMessageHandler.java b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MeetingMessageHandler.java deleted file mode 100755 index c655188099..0000000000 --- a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MeetingMessageHandler.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.bigbluebutton.app.screenshare.messaging.redis; - -import java.util.HashMap; -import java.util.Map; - -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; -import com.google.gson.Gson; -import org.bigbluebutton.common.messages.MessagingConstants; - -public class MeetingMessageHandler implements MessageHandler { - private static Logger log = Red5LoggerFactory.getLogger(MeetingMessageHandler.class, "screenshare"); - - - @Override - public void handleMessage(String pattern, String channel, String message) { - - if (channel.equalsIgnoreCase(MessagingConstants.TO_MEETING_CHANNEL)) { - -// IMessage msg = MessageFromJsonConverter.convert(message); -// if (msg != null) { - -// } - } else if (channel.equalsIgnoreCase(MessagingConstants.TO_SYSTEM_CHANNEL)) { -// IMessage msg = MessageFromJsonConverter.convert(message); - -// if (msg != null) { -// -// } - } - } - - - -} diff --git a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageDistributor.java b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageDistributor.java deleted file mode 100755 index 794704bec8..0000000000 --- a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageDistributor.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.bigbluebutton.app.screenshare.messaging.redis; - -import java.util.Set; - -public class MessageDistributor { - private ReceivedMessageHandler handler; - private Set<MessageHandler> listeners; - - public void setMessageListeners(Set<MessageHandler> listeners) { - this.listeners = listeners; - } - - public void setMessageHandler(ReceivedMessageHandler handler) { - this.handler = handler; - if (handler != null) { - handler.setMessageDistributor(this); - } - } - - public void notifyListeners(String pattern, String channel, String message) { - for (MessageHandler listener : listeners) { - listener.handleMessage(pattern, channel, message); - } - } -} diff --git a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageReceiver.java b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageReceiver.java deleted file mode 100755 index 5747fe5406..0000000000 --- a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/MessageReceiver.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.bigbluebutton.app.screenshare.messaging.redis; - -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; - -import org.bigbluebutton.common.messages.MessagingConstants; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; - -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPubSub; -import redis.clients.jedis.exceptions.JedisConnectionException; - -public class MessageReceiver { - private static Logger log = Red5LoggerFactory.getLogger(MessageReceiver.class, "screenshare"); - - private ReceivedMessageHandler handler; - - private Jedis jedis; - private volatile boolean receiveMessage = false; - - private final Executor msgReceiverExec = Executors.newSingleThreadExecutor(); - - private String host; - private int port; - - public void stop() { - receiveMessage = false; - } - - public void start() { - log.info("Ready to receive messages from Redis pubsub."); - try { - receiveMessage = true; - jedis = new Jedis(host, port); - // Set the name of this client to be able to distinguish when doing - // CLIENT LIST on redis-cli - jedis.clientSetname("bbb-screenshare"); - - Runnable messageReceiver = new Runnable() { - public void run() { - if (receiveMessage) { - try { - jedis.psubscribe(new PubSubListener(), - MessagingConstants.FROM_BBB_APPS_PATTERN); - } catch(JedisConnectionException ex) { - log.warn("Exception on Jedis connection. Resubscribing to pubsub."); - start(); - } - - } - } - }; - msgReceiverExec.execute(messageReceiver); - } catch (Exception e) { - log.error("Error subscribing to channels: " + e.getMessage()); - } - } - - public void setHost(String host){ - this.host = host; - } - - public void setPort(int port) { - this.port = port; - } - - public void setMessageHandler(ReceivedMessageHandler handler) { - this.handler = handler; - } - - private class PubSubListener extends JedisPubSub { - - public PubSubListener() { - super(); - } - - @Override - public void onMessage(String channel, String message) { - // Not used. - } - - @Override - public void onPMessage(String pattern, String channel, String message) { - handler.handleMessage(pattern, channel, message); - } - - @Override - public void onPSubscribe(String pattern, int subscribedChannels) { - log.debug("Subscribed to the pattern: " + pattern); - } - - @Override - public void onPUnsubscribe(String pattern, int subscribedChannels) { - // Not used. - } - - @Override - public void onSubscribe(String channel, int subscribedChannels) { - // Not used. - } - - @Override - public void onUnsubscribe(String channel, int subscribedChannels) { - // Not used. - } - } -} diff --git a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/ReceivedMessageHandler.java b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/ReceivedMessageHandler.java deleted file mode 100755 index b713dd3c3f..0000000000 --- a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/ReceivedMessageHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -package org.bigbluebutton.app.screenshare.messaging.redis; - -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; -import java.util.concurrent.LinkedBlockingQueue; - -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; - -public class ReceivedMessageHandler { - private static Logger log = Red5LoggerFactory.getLogger(ReceivedMessageHandler.class, "bigbluebutton"); - - private BlockingQueue<ReceivedMessage> receivedMessages = new LinkedBlockingQueue<ReceivedMessage>(); - - private volatile boolean processMessage = false; - - private final Executor msgProcessorExec = Executors.newSingleThreadExecutor(); - private final Executor runExec = Executors.newSingleThreadExecutor(); - - private MessageDistributor handler; - - public void stop() { - processMessage = false; - } - - public void start() { - log.info("Ready to handle messages from Redis pubsub!"); - - try { - processMessage = true; - - Runnable messageProcessor = new Runnable() { - public void run() { - while (processMessage) { - try { - ReceivedMessage msg = receivedMessages.take(); - processMessage(msg); - } catch (InterruptedException e) { - log.warn("Error while taking received message from queue."); - } - } - } - }; - msgProcessorExec.execute(messageProcessor); - } catch (Exception e) { - log.error("Error subscribing to channels: " + e.getMessage()); - } - } - - private void processMessage(final ReceivedMessage msg) { - Runnable task = new Runnable() { - public void run() { - if (handler != null) { - handler.notifyListeners(msg.getPattern(), msg.getChannel(), msg.getMessage()); - } else { - log.info("No listeners interested in messages from Redis!"); - } - } - }; - runExec.execute(task); - } - - public void handleMessage(String pattern, String channel, String message) { - ReceivedMessage rm = new ReceivedMessage(pattern, channel, message); - receivedMessages.add(rm); - } - - public void setMessageDistributor(MessageDistributor h) { - this.handler = h; - } -} diff --git a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/RedisPubSubMessageHandler.java b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/RedisPubSubMessageHandler.java deleted file mode 100755 index 76aad623cc..0000000000 --- a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/messaging/redis/RedisPubSubMessageHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.bigbluebutton.app.screenshare.messaging.redis; - -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import org.bigbluebutton.app.screenshare.red5.Red5AppHandler; -import org.bigbluebutton.common.messages.MeetingDestroyedMessage; -import org.bigbluebutton.common.messages.MeetingCreatedMessage; -import org.bigbluebutton.common.messages.MessagingConstants; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; - -public class RedisPubSubMessageHandler implements MessageHandler { - private static Logger log = Red5LoggerFactory.getLogger(RedisPubSubMessageHandler.class, "screenshare"); - private Red5AppHandler handler; - - @Override - public void handleMessage(String pattern, String channel, String message) { - if (channel.equalsIgnoreCase(MessagingConstants.FROM_MEETING_CHANNEL)) { - JsonParser parser = new JsonParser(); - JsonObject obj = (JsonObject) parser.parse(message); - if (obj.has("header") && obj.has("payload")) { - JsonObject header = (JsonObject) obj.get("header"); - if (header.has("name")) { - String messageName = header.get("name").getAsString(); - - if (MeetingDestroyedMessage.NAME.equals(messageName)) { - MeetingDestroyedMessage msg = MeetingDestroyedMessage.fromJson(message); - handler.meetingHasEnded(msg.meetingId); - - } else if (MeetingCreatedMessage.MEETING_CREATED.equals(messageName)) { - MeetingCreatedMessage msg = MeetingCreatedMessage.fromJson(message); - handler.meetingCreated(msg.meetingId, msg.record); - - } - } - } - } - - - } - - public void setAppHandler(Red5AppHandler handler) { - this.handler = handler; - } - -} diff --git a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/ScreenShareApplication.scala b/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/ScreenShareApplication.scala index e28ad314e7..974e86966c 100755 --- a/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/ScreenShareApplication.scala +++ b/bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/ScreenShareApplication.scala @@ -66,7 +66,6 @@ class ScreenShareApplication(val bus: IEventsMessageBus, val jnlpFile: String, // } screenShareManager ! new MeetingEnded(meetingId) - } def meetingCreated(meetingId: String, record: java.lang.Boolean) { diff --git a/bbb-screenshare/app/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml b/bbb-screenshare/app/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml index c64c2974aa..d056fd28aa 100755 --- a/bbb-screenshare/app/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml +++ b/bbb-screenshare/app/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml @@ -34,25 +34,4 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <property name="port" value="${redis.port}" /> </bean> - <bean id="red5RedisReceiver" class="org.bigbluebutton.app.screenshare.messaging.redis.MessageReceiver" - init-method="start" destroy-method="stop"> - <property name="messageHandler"> <ref local="red5RedisHandler"/> </property> - <property name="host" value="${redis.host}" /> - <property name="port" value="${redis.port}" /> - </bean> - - <bean id="red5RedisHandler" class="org.bigbluebutton.app.screenshare.messaging.redis.ReceivedMessageHandler" - init-method="start" destroy-method="stop"> - <property name="messageDistributor"><ref bean="red5RedisDistributor" /></property> - </bean> - - <bean id="red5RedisDistributor" class="org.bigbluebutton.app.screenshare.messaging.redis.MessageDistributor"> - <property name="messageHandler"> <ref local="red5RedisHandler"/> </property> - <property name="messageListeners"> - <set> - <ref bean="redisPubSubMessageHandler" /> - </set> - </property> - </bean> - </beans> diff --git a/bbb-screenshare/app/src/main/webapp/WEB-INF/red5-web.xml b/bbb-screenshare/app/src/main/webapp/WEB-INF/red5-web.xml index cab5891b7e..1fd0b7bfc6 100755 --- a/bbb-screenshare/app/src/main/webapp/WEB-INF/red5-web.xml +++ b/bbb-screenshare/app/src/main/webapp/WEB-INF/red5-web.xml @@ -114,10 +114,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <constructor-arg index="1" value="${redis.port}"/> </bean> - <bean id="redisPubSubMessageHandler" - class="org.bigbluebutton.app.screenshare.messaging.redis.RedisPubSubMessageHandler"> - <property name="appHandler" ref="red5AppHandler"/> - </bean> <import resource="bbb-redis-pool.xml"/> <import resource="bbb-red5-redis-pubsub.xml"/> -- GitLab