diff --git a/etc/message.xml b/etc/message.xml
index e4efeed05f326b5fc1b770654ec0ec292a010338..38415159a16a4ade64e7e5f27517ab20a9be3ea2 100644
--- a/etc/message.xml
+++ b/etc/message.xml
@@ -562,5 +562,8 @@
 			<map>
 			</map>
 		</map>
+
+		<key>maxQueuedEvents</key>
+		<integer>100</integer>
     </map>
 </llsd>
diff --git a/indra/llmessage/llmessageconfig.cpp b/indra/llmessage/llmessageconfig.cpp
index 550071fade5e5cb6438ee418e7167ece9bf7bf94..ed51019a2206a1e0c4d30cfe447c49a7666b3aa4 100644
--- a/indra/llmessage/llmessageconfig.cpp
+++ b/indra/llmessage/llmessageconfig.cpp
@@ -66,6 +66,7 @@ public:
 
 	/* virtual */ void loadFile();
 	void loadServerDefaults(const LLSD& data);
+	 void loadMaxQueuedEvents(const LLSD& data);
 	void loadMessages(const LLSD& data);
 	void loadCapBans(const LLSD& blacklist);
 	void loadMessageBans(const LLSD& blacklist);
@@ -73,6 +74,7 @@ public:
 
 public:
 	LLSD mCapBans;
+	 S32 mMaxQueuedEvents;
 };
 
 std::string LLMessageConfigFile::filename()
@@ -112,6 +114,7 @@ void LLMessageConfigFile::loadFile()
         }
     }
 	loadServerDefaults(data);
+	loadMaxQueuedEvents(data);
 	loadMessages(data);
 	loadCapBans(data);
 	loadMessageBans(data);
@@ -122,6 +125,19 @@ void LLMessageConfigFile::loadServerDefaults(const LLSD& data)
 	mServerDefault = data["serverDefaults"][sServerName].asString();
 }
 
+const S32 DEFAULT_MAX_QUEUED_EVENTS = 100;
+void LLMessageConfigFile::loadMaxQueuedEvents(const LLSD& data)
+{
+	 if (data.has("maxQueuedEvents"))
+	 {
+		  mMaxQueuedEvents = data["maxQueuedEvents"].asInteger();
+	 }
+	 else
+	 {
+		  mMaxQueuedEvents = DEFAULT_MAX_QUEUED_EVENTS;
+	 }
+}
+
 void LLMessageConfigFile::loadMessages(const LLSD& data)
 {
 	mMessages = data["messages"];
@@ -191,10 +207,10 @@ void LLMessageConfig::useConfig(const LLSD& config)
 {
 	LLMessageConfigFile &the_file = LLMessageConfigFile::instance();
 	the_file.loadServerDefaults(config);
+	the_file.loadMaxQueuedEvents(config);
 	the_file.loadMessages(config);
 	the_file.loadCapBans(config);
 	the_file.loadMessageBans(config);
-
 }
 
 //static
@@ -212,6 +228,13 @@ LLMessageConfig::Flavor LLMessageConfig::getServerDefaultFlavor()
 	return NO_FLAVOR;
 }
 
+//static
+S32 LLMessageConfig::getMaxQueuedEvents()
+{
+	LLMessageConfigFile& file = LLMessageConfigFile::instance();
+	return file.mMaxQueuedEvents;
+}
+
 //static
 LLMessageConfig::Flavor LLMessageConfig::getMessageFlavor(const std::string& msg_name)
 {
diff --git a/indra/llmessage/llmessageconfig.h b/indra/llmessage/llmessageconfig.h
index 6814089b056c9dec1212521e62bde6e39bedb5fe..d69428656963fe5bde55e290e98da513d22960be 100644
--- a/indra/llmessage/llmessageconfig.h
+++ b/indra/llmessage/llmessageconfig.h
@@ -48,6 +48,7 @@ public:
 	static void useConfig(const LLSD& config);
 
 	static Flavor getServerDefaultFlavor();
+	 static S32 getMaxQueuedEvents();
 
 	// For individual messages
 	static Flavor getMessageFlavor(const std::string& msg_name);
diff --git a/indra/test/llmessageconfig_tut.cpp b/indra/test/llmessageconfig_tut.cpp
index 086dbf4ef83f25f8b5c92c65aaa0cd92de678977..c2329220e552c965f791007e4e1565b274530dc0 100644
--- a/indra/test/llmessageconfig_tut.cpp
+++ b/indra/test/llmessageconfig_tut.cpp
@@ -221,4 +221,21 @@ namespace tut
 					  LLMessageConfig::onlySendLatest("msg2"),
 					  false);
 	}
+
+	template<> template<>
+	void LLMessageConfigTestObject::test<9>()
+		 // tests that event queue max is reloaded
+	{
+		LLSD config;
+		config["maxQueuedEvents"] = 200;
+		LLMessageConfig::useConfig(config);
+		ensure_equals("Ensure setting maxQueuedEvents",
+					  LLMessageConfig::getMaxQueuedEvents(),
+					  200);
+
+		LLMessageConfig::useConfig(LLSD());
+		ensure_equals("Ensure default of event queue max 100",
+					  LLMessageConfig::getMaxQueuedEvents(),
+					  100);
+	}	 
 }