Skip to content

Instantly share code, notes, and snippets.

@krams915
Created September 15, 2011 14:44
Show Gist options
  • Save krams915/1219424 to your computer and use it in GitHub Desktop.
Save krams915/1219424 to your computer and use it in GitHub Desktop.
EventRabbitAspect.java
package org.krams.tutorial.aop;
import java.util.Date;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* Interceptor for publishing messages to RabbitMQ
*
* @author krams at {@link http://[email protected]}
*/
@Aspect
@Order(1)
@Component
public class EventRabbitAspect {
protected Logger logger = Logger.getLogger("aop");
@Autowired
private volatile AmqpTemplate amqpTemplate;
public static final String RABBIT_EXCHANGE = "eventExchange";
public static final String GENERAL_EVENT_ROUTE_KEY = "event.general.*";
public static final String ERROR_EVENT_ROUTE_KEY = "event.error.*";
@Around("execution(* org.krams.tutorial.service.EventService.*(..))")
public Object interceptService(ProceedingJoinPoint pjp) throws Throwable {
try {
logger.debug("Publishing event to RabbitMQ");
this.amqpTemplate.convertAndSend(RABBIT_EXCHANGE, GENERAL_EVENT_ROUTE_KEY, new Date() + ": " + pjp.toShortString());
return pjp.proceed();
} catch (Exception e) {
logger.debug("Publishing event to RabbitMQ");
this.amqpTemplate.convertAndSend(RABBIT_EXCHANGE, ERROR_EVENT_ROUTE_KEY, new Date() + ": " + pjp.getSignature().toLongString() + " - " + e.toString());
return pjp.proceed();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment