diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala index 3291a0e6bc8d80f86013e3d491054e11ec1a56b8..04002b462c00aa598c7733180e1aa92a9f58beca 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/RedisPublisher.scala @@ -23,7 +23,7 @@ class RedisPublisher(val system: ActorSystem) extends SystemConfiguration { // publish after 2 seconds every 2 or 5 seconds //system.scheduler.schedule(2 seconds, 2 seconds)(redis.publish("time", System.currentTimeMillis())) - // system.scheduler.schedule(2 seconds, 5 seconds)(redis.publish("bigbluebutton:to-bbb-apps:users", "pattern value")) + //system.scheduler.schedule(10 seconds, 5 seconds)(redis.publish("bigbluebutton:to-bbb-apps:users", "pattern value")) def publish(channel: String, data: String) { println("PUBLISH TO [" + channel + "]: \n [" + data + "]") diff --git a/bbb-common-message/build.sbt b/bbb-common-message/build.sbt index debb98a81b1e51ba5239d1e659ae3940b60c3897..06e4376d76b0647c346d8a8a64f62a4c0ef92996 100755 --- a/bbb-common-message/build.sbt +++ b/bbb-common-message/build.sbt @@ -4,7 +4,7 @@ name := "bbb-common-message" organization := "org.bigbluebutton" -version := "0.0.12" +version := "0.0.13-SNAPSHOT" // We want to have our jar files in lib_managed dir. // This way we'll have the right path when we import @@ -48,12 +48,12 @@ autoScalaLibrary := false * publish to the local maven repo using "sbt publish" */ // Uncomment this to publish to local maven repo while commenting out the nexus repo -//publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository"))) +publishTo := Some(Resolver.file("file", new File(Path.userHome.absolutePath+"/.m2/repository"))) // Comment this out when publishing to local maven repo using SNAPSHOT version. // To push to sonatype "sbt publishSigned" - +/* publishTo := { val nexus = "https://oss.sonatype.org/" if (isSnapshot.value) @@ -61,7 +61,7 @@ publishTo := { else Some("releases" at nexus + "service/local/staging/deploy/maven2") } - +*/ // Enables publishing to maven repo publishMavenStyle := true diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PubSubPingMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PubSubPingMessage.java new file mode 100755 index 0000000000000000000000000000000000000000..c01d23a995c6507dd68c98e82e93a3afec5e65e1 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PubSubPingMessage.java @@ -0,0 +1,11 @@ +package org.bigbluebutton.common.messages; + +import org.bigbluebutton.common.messages.payload.PubSubPingMessagePayload; + +public class PubSubPingMessage implements IBigBlueButtonMessage { + + public static final String PUBSUB_PING = "BbbPubSubPingMessage"; + + public MessageHeader header; + public PubSubPingMessagePayload payload; +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PubSubPongMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PubSubPongMessage.java new file mode 100755 index 0000000000000000000000000000000000000000..36d7467e0d635311379fb57658c996d94c171aaf --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/PubSubPongMessage.java @@ -0,0 +1,11 @@ +package org.bigbluebutton.common.messages; + +import org.bigbluebutton.common.messages.payload.PubSubPingMessagePayload; + +public class PubSubPongMessage implements IBigBlueButtonMessage { + + public static final String PUBSUB_PONG = "BbbPubSubPongMessage"; + + public MessageHeader header; + public PubSubPingMessagePayload payload; +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessage.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessage.java index c0a99875d091442008a6c72fe024d237dd86f3d4..da6a6b4e956f9fec12cf05c3377b55379f718b90 100755 --- a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessage.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessage.java @@ -1,5 +1,7 @@ package org.bigbluebutton.common.messages; +import org.bigbluebutton.common.messages.payload.StartCustomPollRequestMessagePayload; + public class StartCustomPollRequestMessage implements IBigBlueButtonMessage { public static final String START_CUSTOM_POLL_REQUEST = "start_custom_poll_request_message"; diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java index 2219090ab01c8ffd9e2eb7cc5fdc608aca949c2b..ed475eb25f8c5e088e6f5327e4af1b26f87e4fe4 100755 --- a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java @@ -4,8 +4,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; - -import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/payload/PubSubPingMessagePayload.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/payload/PubSubPingMessagePayload.java new file mode 100755 index 0000000000000000000000000000000000000000..1e60a5b01449d486f63b5ec4d1cb03b60e66fcc8 --- /dev/null +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/payload/PubSubPingMessagePayload.java @@ -0,0 +1,6 @@ +package org.bigbluebutton.common.messages.payload; + +public class PubSubPingMessagePayload { + public String system; + public Long timestamp; +} diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessagePayload.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/payload/StartCustomPollRequestMessagePayload.java similarity index 81% rename from bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessagePayload.java rename to bbb-common-message/src/main/java/org/bigbluebutton/common/messages/payload/StartCustomPollRequestMessagePayload.java index db604a7ba5b03bef4c67fff098ef17212ecee723..e72d90145dab17b38a8143770b06cd0f2932c0ce 100755 --- a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessagePayload.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/payload/StartCustomPollRequestMessagePayload.java @@ -1,4 +1,4 @@ -package org.bigbluebutton.common.messages; +package org.bigbluebutton.common.messages.payload; import java.util.ArrayList; diff --git a/bbb-common-message/src/test/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessageTest.java b/bbb-common-message/src/test/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessageTest.java index d57e074a4bd8d8f271b63317d2e48bf2099494a3..c8f3cd58ca56f8a8201f4bc6ef7da577b43f280b 100755 --- a/bbb-common-message/src/test/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessageTest.java +++ b/bbb-common-message/src/test/java/org/bigbluebutton/common/messages/StartCustomPollRequestMessageTest.java @@ -2,6 +2,7 @@ package org.bigbluebutton.common.messages; import java.util.ArrayList; +import org.bigbluebutton.common.messages.payload.StartCustomPollRequestMessagePayload; import org.junit.*; import com.google.gson.Gson; diff --git a/bigbluebutton-apps/build.gradle b/bigbluebutton-apps/build.gradle index 7c417fb7c1a5e7b443cade9d506a29b05ea4ded3..7332e7a3703fb227872feeacace74f9127923c50 100755 --- a/bigbluebutton-apps/build.gradle +++ b/bigbluebutton-apps/build.gradle @@ -88,7 +88,6 @@ dependencies { providedCompile 'org.slf4j:jul-to-slf4j:1.7.9@jar' providedCompile 'org.slf4j:slf4j-api:1.7.9@jar' - compile "redis.clients:jedis:2.1.0" compile "org.codehaus.jackson:jackson-core-asl:$jacksonVersion" compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion" compile "javax.servlet:com.springsource.javax.servlet.jsp.jstl:1.2.0" @@ -106,13 +105,13 @@ dependencies { compile 'org.easymock:easymock:2.4@jar' //redis - //compile 'redis.clients:jedis:2.0.0' - providedCompile 'commons-pool:commons-pool:1.5.6' + compile "redis.clients:jedis:2.7.2" + compile 'org.apache.commons:commons-pool2:2.3' compile 'com.google.code.gson:gson:1.7.1' providedCompile 'org.apache.commons:commons-lang3:3.2' - compile 'org.bigbluebutton:bbb-common-message:0.0.12' + compile 'org.bigbluebutton:bbb-common-message:0.0.13-SNAPSHOT' } test { diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/monitoring/BbbAppsIsAliveMonitorService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/monitoring/BbbAppsIsAliveMonitorService.java index 9b741a9bb7981bb3acecce470065064440bb23cd..75a067972be6d2abb26287d2b13a5f392239401e 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/monitoring/BbbAppsIsAliveMonitorService.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/monitoring/BbbAppsIsAliveMonitorService.java @@ -7,11 +7,18 @@ import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import org.bigbluebutton.common.messages.MessageHeader; +import org.bigbluebutton.common.messages.MessagingConstants; +import org.bigbluebutton.common.messages.PubSubPingMessage; +import org.bigbluebutton.common.messages.payload.PubSubPingMessagePayload; import org.bigbluebutton.red5.client.messaging.ConnectionInvokerService; import org.bigbluebutton.red5.client.messaging.DisconnectAllMessage; +import org.bigbluebutton.red5.pubsub.redis.MessageSender; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.gson.Gson; + public class BbbAppsIsAliveMonitorService { private static Logger log = LoggerFactory.getLogger(BbbAppsIsAliveMonitorService.class); @@ -27,6 +34,12 @@ public class BbbAppsIsAliveMonitorService { private ConnectionInvokerService service; private Long lastKeepAliveMessage = 0L; + private MessageSender sender; + + public void setMessageSender(MessageSender sender) { + this.sender = sender; + } + public void setConnectionInvokerService(ConnectionInvokerService s) { this.service = s; } @@ -99,6 +112,20 @@ public class BbbAppsIsAliveMonitorService { public void run() { CheckIsAliveTimer ping = new CheckIsAliveTimer(); queueMessage(ping); + + PubSubPingMessage msg = new PubSubPingMessage(); + MessageHeader header = new MessageHeader(); + header.name = PubSubPingMessage.PUBSUB_PING; + header.timestamp = System.nanoTime(); + header.replyTo = "BbbRed5"; + header.version = "0.0.1"; + PubSubPingMessagePayload payload = new PubSubPingMessagePayload(); + payload.system = "BbbAppsRed5"; + payload.timestamp = System.currentTimeMillis(); + msg.header = header; + msg.payload = payload; + Gson gson = new Gson(); + sender.send(MessagingConstants.TO_SYSTEM_CHANNEL, gson.toJson(msg)); } } } diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/GenericObjectPoolConfigWrapper.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/GenericObjectPoolConfigWrapper.java deleted file mode 100755 index 0fc77788e9352d99f3d4f8af8e04f2c933c8c837..0000000000000000000000000000000000000000 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/GenericObjectPoolConfigWrapper.java +++ /dev/null @@ -1,142 +0,0 @@ -/** -* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -* -* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -* -* This program is free software; you can redistribute it and/or modify it under the -* terms of the GNU Lesser General Public License as published by the Free Software -* Foundation; either version 3.0 of the License, or (at your option) any later -* version. -* -* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License along -* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. -* -*/ -package org.bigbluebutton.red5.pubsub.redis; - -import org.apache.commons.pool.impl.GenericObjectPool; - -public class GenericObjectPoolConfigWrapper { - - private final GenericObjectPool.Config config; - - public GenericObjectPoolConfigWrapper() { - this.config = new GenericObjectPool.Config(); - } - - public GenericObjectPool.Config getConfig() { - return config; - } - - public int getMaxIdle() { - return this.config.maxIdle; - } - - public void setMaxIdle(int maxIdle) { - this.config.maxIdle = maxIdle; - } - - public int getMinIdle() { - return this.config.minIdle; - } - - public void setMinIdle(int minIdle) { - this.config.minIdle = minIdle; - } - - public int getMaxActive() { - return this.config.maxActive; - } - - public void setMaxActive(int maxActive) { - this.config.maxActive = maxActive; - } - - public long getMaxWait() { - return this.config.maxWait; - } - - public void setMaxWait(long maxWait) { - this.config.maxWait = maxWait; - } - - public byte getWhenExhaustedAction() { - return this.config.whenExhaustedAction; - } - - public void setWhenExhaustedAction(byte whenExhaustedAction) { - this.config.whenExhaustedAction = whenExhaustedAction; - } - - public boolean isTestOnBorrow() { - return this.config.testOnBorrow; - } - - public void setTestOnBorrow(boolean testOnBorrow) { - this.config.testOnBorrow = testOnBorrow; - } - - public boolean isTestOnReturn() { - return this.config.testOnReturn; - } - - public void setTestOnReturn(boolean testOnReturn) { - this.config.testOnReturn = testOnReturn; - } - - public boolean isTestWhileIdle() { - return this.config.testWhileIdle; - } - - public void setTestWhileIdle(boolean testWhileIdle) { - this.config.testWhileIdle = testWhileIdle; - } - - public long getTimeBetweenEvictionRunsMillis() { - return this.config.timeBetweenEvictionRunsMillis; - } - - public void setTimeBetweenEvictionRunsMillis( - long timeBetweenEvictionRunsMillis) { - this.config.timeBetweenEvictionRunsMillis = - timeBetweenEvictionRunsMillis; - } - - public int getNumTestsPerEvictionRun() { - return this.config.numTestsPerEvictionRun; - } - - public void setNumTestsPerEvictionRun(int numTestsPerEvictionRun) { - this.config.numTestsPerEvictionRun = numTestsPerEvictionRun; - } - - public long getMinEvictableIdleTimeMillis() { - return this.config.minEvictableIdleTimeMillis; - } - - public void setMinEvictableIdleTimeMillis(long minEvictableIdleTimeMillis) { - this.config.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; - } - - public long getSoftMinEvictableIdleTimeMillis() { - return this.config.softMinEvictableIdleTimeMillis; - } - - public void setSoftMinEvictableIdleTimeMillis( - long softMinEvictableIdleTimeMillis) { - this.config.softMinEvictableIdleTimeMillis = - softMinEvictableIdleTimeMillis; - } - - public boolean isLifo() { - return this.config.lifo; - } - - public void setLifo(boolean lifo) { - this.config.lifo = lifo; - } -} diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageReceiver.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageReceiver.java index db0ba373b79a36979f0ea078e1415e268d398e20..3b4a6b65b5f230307c0d4e5ab264219b0c9ccee6 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageReceiver.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageReceiver.java @@ -2,13 +2,10 @@ package org.bigbluebutton.red5.pubsub.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.JedisPool; import redis.clients.jedis.JedisPubSub; public class MessageReceiver { @@ -16,11 +13,14 @@ public class MessageReceiver { private ReceivedMessageHandler handler; - private JedisPool redisPool; + 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; } @@ -29,7 +29,8 @@ public class MessageReceiver { log.info("Ready to receive messages from Redis pubsub."); try { receiveMessage = true; - final Jedis jedis = redisPool.getResource(); + jedis = new Jedis(host, port); + jedis.clientSetname("red5-psubscriber"); Runnable messageReceiver = new Runnable() { public void run() { @@ -45,8 +46,12 @@ public class MessageReceiver { } } - public void setRedisPool(JedisPool redisPool){ - this.redisPool = redisPool; + public void setHost(String host){ + this.host = host; + } + + public void setPort(int port) { + this.port = port; } public void setMessageHandler(ReceivedMessageHandler handler) { diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageSender.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageSender.java index 322b2b6acc2a2878890c025244f84741bb5401e4..b4eacbfc704a81715b509d3b278e0260abfd7076 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageSender.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/pubsub/redis/MessageSender.java @@ -4,10 +4,14 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; + +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; + import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; +import redis.clients.jedis.Protocol; public class MessageSender { private static Logger log = Red5LoggerFactory.getLogger(MessageSender.class, "bigbluebutton"); @@ -19,11 +23,17 @@ public class MessageSender { private final Executor runExec = Executors.newSingleThreadExecutor(); private BlockingQueue<MessageToSend> messages = new LinkedBlockingQueue<MessageToSend>(); + private String host; + private int port; + public void stop() { sendMessage = false; } - public void start() { + public void start() { + redisPool = new JedisPool(new GenericObjectPoolConfig(), host, port, Protocol.DEFAULT_TIMEOUT, null, + Protocol.DEFAULT_DATABASE, "red5-publisher"); + log.info("Redis message publisher starting!"); try { sendMessage = true; @@ -60,7 +70,7 @@ public class MessageSender { } catch(Exception e){ log.warn("Cannot publish the message to redis", e); } finally { - redisPool.returnResource(jedis); + jedis.close(); } } }; @@ -68,7 +78,11 @@ public class MessageSender { runExec.execute(task); } - public void setRedisPool(JedisPool redisPool){ - this.redisPool = redisPool; + public void setHost(String host){ + this.host = host; + } + + public void setPort(int port) { + this.port = port; } } diff --git a/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml b/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml index 1d2dc3b44eb2cc988a42250a00b130d5723e3f66..f156d73c1f33aa717fcb439e97763719ab891378 100755 --- a/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml +++ b/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-red5-redis-pubsub.xml @@ -29,13 +29,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <bean id="red5RedisSender" class="org.bigbluebutton.red5.pubsub.redis.MessageSender" init-method="start" destroy-method="stop"> - <property name="redisPool"> <ref bean="redisPool"/></property> + <property name="host" value="${redis.host}" /> + <property name="port" value="${redis.port}" /> </bean> <bean id="red5RedisReceiver" class="org.bigbluebutton.red5.pubsub.redis.MessageReceiver" init-method="start" destroy-method="stop"> - <property name="redisPool"> <ref bean="redisPool"/></property> <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.red5.pubsub.redis.ReceivedMessageHandler" diff --git a/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml b/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml index ba2ae3e2a089af8b07777109e626e5d97098770c..f6ea08db3ba0fe4a7c5897d4e142cbd7409bfe6c 100755 --- a/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml +++ b/bigbluebutton-apps/src/main/webapp/WEB-INF/bbb-redis-pool.xml @@ -28,39 +28,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. "> <bean id="redisPool" class="redis.clients.jedis.JedisPool"> - <constructor-arg index="0"> - <bean factory-bean="config" factory-method="getConfig" /> - </constructor-arg> - <constructor-arg index="1" value="${redis.host}"/> - <constructor-arg index="2" value="${redis.port}"/> + <constructor-arg index="0" value="${redis.host}"/> + <constructor-arg index="1" value="${redis.port}"/> </bean> - - <bean id="config" class="org.bigbluebutton.red5.pubsub.redis.GenericObjectPoolConfigWrapper"> - <!-- Action to take when trying to acquire a connection and all connections are taken --> - <property name="whenExhaustedAction"> - <!-- Fail-fast behaviour, we don't like to keep the kids waiting --> - <util:constant static-field="org.apache.commons.pool.impl.GenericObjectPool.WHEN_EXHAUSTED_FAIL" /> - <!-- Default behaviour, block the caller until a resource becomes available --> - <!--<util:constant static-field="org.apache.commons.pool.impl.GenericObjectPool.WHEN_EXHAUSTED_BLOCK" />--> - </property> - <!-- Maximum active connections to Redis instance --> - <property name="maxActive" value="12" /> - <!-- Number of connections to Redis that just sit there and do nothing --> - <property name="maxIdle" value="6" /> - <!-- Minimum number of idle connections to Redis - these can be seen as always open and ready to serve --> - <property name="minIdle" value="1" /> - <!-- Tests whether connection is dead when connection retrieval method is called --> - <property name="testOnBorrow" value="true" /> - <!-- Tests whether connection is dead when returning a connection to the pool --> - <property name="testOnReturn" value="true" /> - <!-- Tests whether connections are dead during idle periods --> - <property name="testWhileIdle" value="true" /> - <!-- Maximum number of connections to test in each idle check --> - <property name="numTestsPerEvictionRun" value="12" /> - <!-- Idle connection checking period --> - <property name="timeBetweenEvictionRunsMillis" value="60000" /> - <!-- Maximum time, in milliseconds, to wait for a resource when exausted action is set to WHEN_EXAUSTED_BLOCK --> - <property name="maxWait" value="5000" /> - </bean> - + </beans> diff --git a/bigbluebutton-apps/src/main/webapp/WEB-INF/red5-web.xml b/bigbluebutton-apps/src/main/webapp/WEB-INF/red5-web.xml index f9709f7d95c8adf0f2edf0f225a4bd2519fcc316..71e33b7777ed0c95c2ffb9e26209b3545a9f7804 100755 --- a/bigbluebutton-apps/src/main/webapp/WEB-INF/red5-web.xml +++ b/bigbluebutton-apps/src/main/webapp/WEB-INF/red5-web.xml @@ -111,6 +111,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <bean id="bbbAppsIsAliveMonitorService" class="org.bigbluebutton.red5.monitoring.BbbAppsIsAliveMonitorService" init-method="start" destroy-method="stop"> <property name="connectionInvokerService"> <ref bean="connInvokerService"/></property> + <property name="messageSender" ref="red5RedisSender"/> </bean> <bean id="bbbAppsIsKeepAliveHandler" class="org.bigbluebutton.red5.monitoring.BbbAppsIsKeepAliveHandler">