2016-11-04 4 views
0

wie ich habe 5 SMTP Server und ich möchte Bulk-Mailing und möchte auf jeden Server dann posten, wie ich es erreichen kann? Ich verwende nun wie folgt:Verbindung Pooling mit SMTP-Servern

String smtpHost=”smtp.gmail.com”; 
javaMailSender.setHost(smtpHost); 
Properties mailProps = new Properties(); 
mailProps.put(“mail.smtp.connectiontimeout”, “2000”); 
mailProps.put(“mail.smtp.timeout”, “2000”); 
mailProps.put(“mail.debug”, “false”); 
javaMailSender.setJavaMailProperties(mailProps); 

Jetzt möchte ich auf mehreren VIPs schreiben wie

String smtpHost=”192.168.xx.xx,192.168.xx.xx,192.168.xx.xx”; 

Können Sie, wie ich dies erreichen können?

Antwort

0

Sie können SmtpConnectionPool verwenden.

Sitzung mit Eigenschaften für verschiedene Server erstellen, z.

Properties mailServerProperties = new Properties(); 
mailServerProperties.put("mail.smtp.port",String.valueOf(port)); 
Session session = Session.getDefaultInstance(mailServerProperties); 

erstellen SmtpConnectionPool pro IP sagen, zu Beginn der Anwendung

GenericObjectPoolConfig config = new GenericObjectPoolConfig(); 
config.setMaxTotal(5); 

SmtpConnectionFactory smtpConnectionFactory = SmtpConnectionFactoryBuilder.newSmtpBuilder() 
              .session(session).port(port).protocol("smtp") 
               .build(); 
SmtpConnectionPool smtpConnectionPool = new SmtpConnectionPool(smtpConnectionFactory, config); 

Sie dann die Pools pro IP in einer Karte perisit kann

pools.put(ip, smtpConnectionPool); 

Während die E-Mail Senden Sie greifen ein Pool von Map und dann leihen Sie eine Verbindung aus dem Pool und senden Sie Ihre E-Mail.

Sie sollten auch einen Warteschlangensortierungsmechanismus in Betracht ziehen, da das Senden von Massen-E-Mails ein Hintergrundjob sein sollte.

+0

Dank Anuj, SMTP-Pooling war hilfreich. – Sachin

+0

Froh, dass es geholfen hat !!! –