aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2018-10-04 23:02:06 +0300
committerGravatar Vitaly Takmazov2018-10-04 23:09:17 +0300
commit0559e1f5239d1f5496155eacd447bdad75e19006 (patch)
treef2f36e5a4b63129668740ba27a21291dd705449b
parent9f7150aa4419380bdc75d7c0edaa2c6ff7d86ba9 (diff)
Async event listeners
-rw-r--r--juick-common/src/main/java/com/juick/service/component/NotificationListener.java6
-rw-r--r--juick-server/src/main/java/com/juick/server/EmailManager.java27
-rw-r--r--juick-server/src/main/java/com/juick/server/MessengerManager.java27
-rw-r--r--juick-server/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java2
-rw-r--r--juick-server/src/main/java/com/juick/service/activities/ActivityListener.java5
5 files changed, 58 insertions, 9 deletions
diff --git a/juick-common/src/main/java/com/juick/service/component/NotificationListener.java b/juick-common/src/main/java/com/juick/service/component/NotificationListener.java
index e4ccb13b..8092e258 100644
--- a/juick-common/src/main/java/com/juick/service/component/NotificationListener.java
+++ b/juick-common/src/main/java/com/juick/service/component/NotificationListener.java
@@ -1,16 +1,22 @@
package com.juick.service.component;
import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
public interface NotificationListener {
+ @Async
@EventListener
void processMessageEvent(MessageEvent messageEvent);
+ @Async
@EventListener
void processSubscribeEvent(SubscribeEvent subscribeEvent);
+ @Async
@EventListener
void processLikeEvent(LikeEvent likeEvent);
+ @Async
@EventListener
void processPingEvent(PingEvent pingEvent);
+ @Async
@EventListener
void processMessageReadEvent(MessageReadEvent messageReadEvent);
}
diff --git a/juick-server/src/main/java/com/juick/server/EmailManager.java b/juick-server/src/main/java/com/juick/server/EmailManager.java
index 2be21127..534de35b 100644
--- a/juick-server/src/main/java/com/juick/server/EmailManager.java
+++ b/juick-server/src/main/java/com/juick/server/EmailManager.java
@@ -2,15 +2,14 @@ package com.juick.server;
import com.juick.Message;
import com.juick.User;
-import com.juick.service.component.MessageEvent;
import com.juick.service.EmailService;
import com.juick.service.MessagesService;
import com.juick.service.UserService;
+import com.juick.service.component.*;
import com.juick.util.MessageUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.annotation.Nonnull;
@@ -32,7 +31,7 @@ import static com.juick.formatters.PlainTextFormatter.formatPost;
import static com.juick.formatters.PlainTextFormatter.formatUrl;
@Component
-public class EmailManager implements ApplicationListener<MessageEvent> {
+public class EmailManager implements NotificationListener {
public static final String MSGID_PATTERN = "\\.|@|<";
@@ -44,7 +43,7 @@ public class EmailManager implements ApplicationListener<MessageEvent> {
@Inject
private UserService userService;
@Override
- public void onApplicationEvent(@Nonnull MessageEvent event) {
+ public void processMessageEvent(@Nonnull MessageEvent event) {
Message msg = event.getMessage();
List<User> subscribedUsers = event.getUsers();
if (msg.isService()) {
@@ -69,6 +68,26 @@ public class EmailManager implements ApplicationListener<MessageEvent> {
}
}
+ @Override
+ public void processSubscribeEvent(SubscribeEvent subscribeEvent) {
+
+ }
+
+ @Override
+ public void processLikeEvent(LikeEvent likeEvent) {
+
+ }
+
+ @Override
+ public void processPingEvent(PingEvent pingEvent) {
+
+ }
+
+ @Override
+ public void processMessageReadEvent(MessageReadEvent messageReadEvent) {
+
+ }
+
private void emailNotify(String email, String subject, Message msg) {
Map<String, String> headers = new HashMap<>();
if (!MessageUtils.isPM(msg)) {
diff --git a/juick-server/src/main/java/com/juick/server/MessengerManager.java b/juick-server/src/main/java/com/juick/server/MessengerManager.java
index 1283d8b2..90c58f03 100644
--- a/juick-server/src/main/java/com/juick/server/MessengerManager.java
+++ b/juick-server/src/main/java/com/juick/server/MessengerManager.java
@@ -17,17 +17,16 @@ import com.github.messenger4j.userprofile.UserProfile;
import com.github.messenger4j.webhook.event.TextMessageEvent;
import com.juick.Message;
import com.juick.User;
-import com.juick.service.component.MessageEvent;
import com.juick.model.AnonymousUser;
import com.juick.service.MessagesService;
import com.juick.service.MessengerService;
import com.juick.service.UserService;
+import com.juick.service.component.*;
import com.juick.util.MessageUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.annotation.Nonnull;
@@ -45,7 +44,7 @@ import static com.juick.formatters.PlainTextFormatter.formatPost;
import static com.juick.formatters.PlainTextFormatter.formatUrl;
@Component
-public class MessengerManager implements ApplicationListener<MessageEvent> {
+public class MessengerManager implements NotificationListener {
private static final Logger logger = LoggerFactory.getLogger(MessengerManager.class);
@Inject
private MessagesService messagesService;
@@ -112,7 +111,7 @@ public class MessengerManager implements ApplicationListener<MessageEvent> {
}
@Override
- public void onApplicationEvent(@Nonnull MessageEvent event) {
+ public void processMessageEvent(@Nonnull MessageEvent event) {
Message msg = event.getMessage();
List<User> subscribedUsers = event.getUsers();
if (msg.isService()) {
@@ -126,6 +125,26 @@ public class MessengerManager implements ApplicationListener<MessageEvent> {
}
}
+ @Override
+ public void processSubscribeEvent(SubscribeEvent subscribeEvent) {
+
+ }
+
+ @Override
+ public void processLikeEvent(LikeEvent likeEvent) {
+
+ }
+
+ @Override
+ public void processPingEvent(PingEvent pingEvent) {
+
+ }
+
+ @Override
+ public void processMessageReadEvent(MessageReadEvent messageReadEvent) {
+
+ }
+
private void messengerNotify(String messengerUser, String text, String url) {
try {
if (!StringUtils.isEmpty(url)) {
diff --git a/juick-server/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java b/juick-server/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java
index 45d17306..5a5d2c7b 100644
--- a/juick-server/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java
+++ b/juick-server/src/main/java/com/juick/server/configuration/ApiAppConfiguration.java
@@ -41,7 +41,7 @@ import javax.inject.Inject;
* Created by aalexeev on 11/12/16.
*/
@Configuration
-@EnableAsync
+@EnableAsync(proxyTargetClass = true)
@EnableScheduling
@EnableWebSocket
public class ApiAppConfiguration implements WebMvcConfigurer, WebSocketConfigurer {
diff --git a/juick-server/src/main/java/com/juick/service/activities/ActivityListener.java b/juick-server/src/main/java/com/juick/service/activities/ActivityListener.java
index 3174ff23..863bda04 100644
--- a/juick-server/src/main/java/com/juick/service/activities/ActivityListener.java
+++ b/juick-server/src/main/java/com/juick/service/activities/ActivityListener.java
@@ -1,14 +1,19 @@
package com.juick.service.activities;
import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
public interface ActivityListener {
+ @Async
@EventListener
void processFollowEvent(FollowEvent event);
+ @Async
@EventListener
void undoFollowEvent(UndoFollowEvent event);
+ @Async
@EventListener
void deleteUserEvent(DeleteUserEvent event);
+ @Async
@EventListener
void deleteMessageEvent(DeleteMessageEvent event);
}