You already wrote that the maximum data rate is 1Mbit/s, but this is the raw rate.
A CAN message (data frame) looks like this on the scope:
and consists of this sections with their length in bits:
Identifier (green) 11
Remote transmission request (RTR) (blue) 1
Identifier extension bit (IDE) 1
Reserved bit (r0) 1
Data length code (DLC) (yellow) 4
Data field (red) 0–64
CRC delimiter 1
ACK slot 1
ACK delimiter 1
End-of-frame (EOF) 7
Inter-frame bits 3
i.e. there are 46 "management" bits for up to 64 data bits.
This reduces your net data rate to about 580kBit/s.
The sender sends a recessive 0 in the ACK slot, and the receiver will pull it to a dominant 1 when the message was received correctly. This means the acknowledge mechanism already is part of this data frame, and doesn't cost additional bandwidth.
Inter-frame bits are the minimum distance between two frames, so the next frame can follow directly. However, if there is more traffic on the bus, the data rate can be drastically reduced. Keep in mind: Whoever has to send a message checks if someone else is talking and if not, starts to talk. If two devices start to talk at the same time, they will notice this, abort, wait a little and try again. (It's really like several people talking to each other. Some tend to say just a few words, pause for a second, and speak again. You sometimes can't jump in to say what you want...)
Finally, all devices must be set to 1MBit/s, and the maximum length of the cable is limited to 40m.
Apart from this, you need to find out what data rate your MCU can handle. It's possible that the CAN module of the MCU can handle a bus speed of 1MBit/s, but that the MCU can not copy the data from the module before the next module arrives. In this cases, you need to implement pauses between the frames.