dagarcos 2 éve
szülő
commit
aa057f5093

+ 25 - 10
src/main/java/es/uv/garcosda/config/RabbitMQConfig.java

@@ -14,30 +14,45 @@ import org.springframework.context.annotation.Configuration;
 @Configuration
 public class RabbitMQConfig {
 
-	@Value("${rabbitmq.queue.name}")
-    private String queue;
+	@Value("${rabbitmq.queue.name.user}")
+    private String queueUser;
+	
+	@Value("${rabbitmq.queue.name.recover}")
+    private String queueRecover;
 
     @Value("${rabbitmq.exchange.name}")
     private String exchange;
 
-    @Value("${rabbitmq.routing.key}")
-    private String routingKey;
+    @Value("${rabbitmq.routing.key.user}")
+    private String routingKeyUser;
+    
+    @Value("${rabbitmq.routing.key.recover}")
+    private String routingKeyRecover;
     
     @SuppressWarnings("unused")
-	@Autowired
+	@Autowired 
     private AmqpAdmin amqpAdmin;
 	
     
     @Bean
     public void Configure() {
-    	Queue q = new Queue(this.queue, true, false, false);
-    	DirectExchange e = new DirectExchange(this.exchange);
+    	Queue q = new Queue(this.queueUser, true, false, false);
+    	Queue q2 = new Queue(this.queueRecover, true, false, false);
     	amqpAdmin.declareQueue(q);
+    	amqpAdmin.declareQueue(q2);
+    	
+    	DirectExchange e = new DirectExchange(this.exchange);
     	amqpAdmin.declareExchange(e);
+    	
+    	amqpAdmin.declareBinding(BindingBuilder
+									.bind(q)
+									.to(e)
+									.with(routingKeyUser));
+    	
     	amqpAdmin.declareBinding(BindingBuilder
-                                  .bind(q)
-                                  .to(e)
-                                  .with(routingKey));
+					                .bind(q2)
+					                .to(e)
+					                .with(routingKeyRecover));
     } 
 	
 	@Bean

+ 18 - 3
src/main/java/es/uv/garcosda/controllers/MailerController.java

@@ -33,8 +33,11 @@ public class MailerController {
 	@Value("${rabbitmq.exchange.name}")
     private String exchange;
 
-    @Value("${rabbitmq.routing.key}")
-    private String routingKey;
+    @Value("${rabbitmq.routing.key.user}")
+    private String routingKeyUser;
+    
+    @Value("${rabbitmq.routing.key.recover}")
+    private String routingKeyRecover;
 		
 	@GetMapping("users")
 	public ResponseEntity<?> getUsers() {
@@ -88,7 +91,7 @@ public class MailerController {
 	@PostMapping("users")
 	public ResponseEntity<?> addUser(@RequestBody User user){
 		if(this.us.addUser(user)) {
-			this.rabitt.convertAndSend(this.exchange, this.routingKey, user);
+			this.rabitt.convertAndSend(this.exchange, this.routingKeyUser, user);
 			return new ResponseEntity<String>("User created", HttpStatus.CREATED);
 		}
 		else{
@@ -96,4 +99,16 @@ public class MailerController {
 		}
 	}
 	
+	@PostMapping("users/{email}/passwd")
+	public ResponseEntity<?> recoverUserPasswd(@PathVariable("email") String email){
+		
+		User user = this.us.findByEmail(email);
+		if(user.getEmail() == null) {
+			return new ResponseEntity<String>("No user found with email "+email, HttpStatus.NOT_FOUND);
+		}
+		
+		this.rabitt.convertAndSend(this.exchange, this.routingKeyRecover, user);
+		return new ResponseEntity<String>("New password sent", HttpStatus.CREATED);
+	}
+	
 }

+ 16 - 6
src/main/resources/META-INF/additional-spring-configuration-metadata.json

@@ -1,17 +1,27 @@
 {"properties": [
   {
-    "name": "rabbitmq.queue.name",
+    "name": "rabbitmq.exchange.name",
     "type": "java.lang.String",
-    "description": "A description for 'rabbitmq.queue.name'"
+    "description": "A description for 'rabbitmq.exchange.name'"
   },
   {
-    "name": "rabbitmq.exchange.name",
+    "name": "rabbitmq.queue.name.user",
     "type": "java.lang.String",
-    "description": "A description for 'rabbitmq.exchange.name'"
+    "description": "A description for 'rabbitmq.queue.name.user'"
+  },
+    {
+    "name": "rabbitmq.queue.name.recover",
+    "type": "java.lang.String",
+    "description": "A description for 'rabbitmq.queue.name.recover'"
+  },
+  {
+    "name": "rabbitmq.routing.key.user",
+    "type": "java.lang.String",
+    "description": "A description for 'rabbitmq.routing.key.user'"
   },
   {
-    "name": "rabbitmq.routing.key",
+    "name": "rabbitmq.routing.key.recover",
     "type": "java.lang.String",
-    "description": "A description for 'rabbitmq.routing.key'"
+    "description": "A description for 'rabbitmq.routing.key.recover'"
   }
 ]}

+ 4 - 2
src/main/resources/application.properties

@@ -3,6 +3,8 @@ spring.rabbitmq.host=localhost
 spring.rabbitmq.port=5672
 spring.rabbitmq.username=guest
 spring.rabbitmq.password=guest
-rabbitmq.queue.name=q.new_user
+rabbitmq.queue.name.user=q.new_user
+rabbitmq.queue.name.recover=q.recover
 rabbitmq.exchange.name=mailer
-rabbitmq.routing.key=k.new_user
+rabbitmq.routing.key.user=k.new_user
+rabbitmq.routing.key.recover=k.recover