Rumah > Soal Jawab > teks badan
Struktur latar belakang ialah SpringMVC, Spring, jpa(HibernateJpaDialect),
DataSource(c3p0), Mysql(InnoBDB),
transactionManager(JpaTransactionManager).
@Transactional(value = "transactionManager", isolation = Isolation.READ_UNCOMMITTED)
public Object addScenicSpot(int tourGuideID, String jsonStr) {
Djd_js entity = new Djd_js();
try{
_setEntity(entity, jsonStr);
entity.setDaoyouID(tourGuideID);
jdjsDao.save(entity);
int spotId = entity.getId();
//添加信息到消息队列中
try {
Sender sender = new SenderImpl();
sender.getGPSFromBaiduAPI("jdjs", spotId, entity.getDizhi());
} catch (InterruptedException e) {
return false;
}
return spotId;
}catch (Exception e){
return false;
}
}
以上是保存的部分,并把得到的 ID 发送到消息队列中,下边是消息队列的处理部分
public boolean updateLngAndLat(MessageVo messageVo) {
System.out.println("CreateTime--------"+messageVo.getCreateDate());
System.out.println("Address--------"+messageVo.getContent());
System.out.println("Id--------"+messageVo.getId());
Djd_js entity = jdjsDao.findOne(messageVo.getId());
System.out.println("entity-Address--------"+entity.getDizhi());
、、运行到这里就直接卡住了,如果注释掉查询,其他的调用皆正常。
Map<String, Object> result = LngAndLatUtil.getLngAndLat(((MessageVo) messageVo).getContent());
System.out.println("result--------"+(int)result.get("result"));
if (1 == (int)result.get("result")){
entity.setJingdu(Double.valueOf(result.get("lng").toString()));
entity.setWeidu(Double.valueOf(result.get("lat").toString()));
System.out.println("message-------------------------------"+"lng:"+Double.valueOf(result.get("lng").toString())+", lat:"+Double.valueOf(result.get("lat").toString()));
jdjsDao.updateLngAndLatBySenciSpotID(messageVo.getId(), (Double) result.get("lng"), (Double) result.get("lat"));
}else {
System.out.println("message-------------------------------False");
}
return false;
}
Hujung hadapan memanggil kaedah addScenicSpot() untuk menyimpan maklumat ke pangkalan data, dan kemudian menghantar ID dalam kawalan data yang disimpan ke baris gilir mesej Kemudian pelanggan memproses maklumat dalam baris gilir dan menanyakan maklumat yang baru disimpan berdasarkan ID. Kemudian panggil antara muka luaran untuk menanyakan longitud dan latitud, dan menyimpan longitud dan latitud yang diperoleh dalam pangkalan data.
Masalahnya sekarang ialah menyimpan maklumat adalah perkara biasa, tetapi apabila ia berkaitan dengan pemprosesan pelanggan, maklumat yang disimpan tidak boleh ditemui berdasarkan ID yang diperolehi.
Sebab pepijat ialah penyerahan transaksi musim bunga lebih lewat daripada mesej pengeluaran baris gilir mesej, mengakibatkan data yang salah diperoleh apabila baris gilir mesej menggunakan mesej
Inspirasi datang dari sini: http://www.cnblogs. com/taocon...
迷茫2017-06-12 09:27:28
Panggilan segerak, tukar kepada panggilan tak segerak?
@Async
getGPSFromBaiduAPI
扔个三星炸死你2017-06-12 09:27:28
Masalah telah diselesaikan, dan kaedah di sini digunakan: http://www.cnblogs.com/taocon...